-
Notifications
You must be signed in to change notification settings - Fork 58
/
lunardate.go
1020 lines (936 loc) · 73.5 KB
/
lunardate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
package bazi
import (
"fmt"
)
// NewLunarDate 新建一个农历日期, 顺序月
func NewLunarDate(nYear int, nMonth int, nDay int, nHour int, nMinute int, nSecond int) *TLunarDate {
pDate := &TLunarDate{
nYear: nYear,
nMonth: nMonth,
nConventionalMonth: nMonth,
nDay: nDay,
nHour: nHour,
nMinute: nMinute,
nSecond: nSecond,
}
pDate.genNormal() // 第几个月转行成闰月
// 检查日期合法性
if !pDate.GetDateIsValid() {
return nil
}
return pDate
}
// NewLunarDateFromLeap 新建一个农历日期, 带闰月
func NewLunarDateFromLeap(nYear int, nMonth int, nDay int, nHour int, nMinute int, nSecond int, isLeap bool) *TLunarDate {
pDate := &TLunarDate{
nYear: nYear,
nMonth: nMonth,
nConventionalMonth: nMonth,
nDay: nDay,
nHour: nHour,
nMinute: nMinute,
nSecond: nSecond,
isLeap: isLeap,
}
pDate.genLeap(isLeap) // 闰月转变成第几月
// 农历 描述的月 换成第几个月的月
// 检查日期合法性
if !pDate.GetDateIsValid() {
return nil
}
return pDate
}
// NewLunarDateFrom64TimeStamp 从64位时间戳反推日期
func NewLunarDateFrom64TimeStamp(nTimeStamp int64) *TLunarDate {
pDate := &TLunarDate{}
// 计算出年份
pDate.GetYearFrom64TimeStamp(nTimeStamp)
// 计算月份
pDate.GetMonthFrom64TimeStamp(nTimeStamp)
// 计算其他参数
pDate.GetDayTimeFrom64TimeStamp(nTimeStamp)
// fmt.Println("这里 时间戳反推")
pDate.genNormal() // 第几个月转行成闰月
// 检查日期合法性
if !pDate.GetDateIsValid() {
return nil
}
return pDate
}
func GetChnChar(nNumber int) string {
switch nNumber {
case 1:
return "一"
case 2:
return "二"
case 3:
return "三"
case 4:
return "四"
case 5:
return "五"
case 6:
return "六"
case 7:
return "七"
case 8:
return "八"
case 9:
return "九"
case 0:
return "〇"
}
return ""
}
// GetChnCharFromYear 年份转成汉字形式
func GetChnCharFromYear(nYear int) string {
if nYear < 0 {
return ""
}
strYear := ""
for {
if nYear <= 0 {
break
}
strYear = GetChnChar(nYear%10) + strYear
nYear = nYear / 10
}
return strYear
}
// TLunarDate 农历日期
type TLunarDate struct {
nYear int
nMonth int // 月份, 顺序月, 不是传统月, 比如闰4月 这里是(第)5月 而有闰4月的5月这里是(第)6月
nLeapMonth int // 闰月 0表示不闰
nDay int // 日
nHour int // 时
nMinute int // 分
nSecond int // 秒
isLeap bool // 是否是闰月
nConventionalMonth int // 传统的月份. 也就是我们平时所说的月份(没有闰月的时候等于 nMonth)
}
// GetDateIsValid 返回日期是否合法
func (m *TLunarDate) GetDateIsValid() bool {
if m.nYear < 1800 || m.nYear > 2299 {
return false // 1800 之前的年份已经严重不精确 2299 也一样
}
// 1月开始, 13月结束
if m.nMonth < 1 || m.nMonth > 13 {
return false
}
// 1号开始
if m.nDay < 1 {
return false
}
if m.nLeapMonth == 0 {
// 没有闰月的话 nMonth 只能是 1 ~ 12
if m.nMonth == 13 {
return false
}
}
// 获取每个月有多少天, 超过天数的话 日期非法
if m.nDay > m.GetMonthDays() {
return false
}
return true
}
func (m *TLunarDate) genNormal() {
m.GetLeapMonth() // 获取闰月信息
// 没有闰月, 不用改
if m.nLeapMonth == 0 {
m.nConventionalMonth = m.nMonth
return
}
// 有闰月
// 闰月之前不变
if m.nMonth < m.nLeapMonth {
m.nConventionalMonth = m.nMonth
return
}
if m.nMonth == m.nLeapMonth+1 {
m.isLeap = true // 刚好是闰月
}
m.nConventionalMonth = m.nMonth - 1
}
// genLeap 闰月改变成第几月
func (m *TLunarDate) genLeap(isLeap bool) {
m.GetLeapMonth() // 获取闰月信息
// 没有闰月, 不用改
if m.nLeapMonth == 0 {
return
}
// 有闰月
// 闰月之前不变
if m.nMonth < m.nLeapMonth {
return
}
// 闰月时
if m.nMonth == m.nLeapMonth {
if isLeap {
// 闰月是下一个月
m.nMonth++
return
}
return
}
// 超过闰月月
m.nMonth++
}
// { * 自公元前 850 年开始的农历闰月信息 -849~2100,移植自中国日历类}
// var SCnLeapMonth string = "0c0080050010a0070030c0080050010a0070030c0080050020a0070030c0080050020a" + "0070030c0090050020a0070030c0090050020a0060030c0060030c00900600c0c0060c" + "00c00c00c0c000600c0c0006090303030006000c00c060c0006c00000c0c0c00600030" + "30006c00009009c0090c00c009000300030906030030c0c00060c00090c0060600c003" + "0060c00c003006009060030c0060060c0090900c00090c0090c00c0060300060600030" + "30c0c00030c0060030c0090060030c0090300c0080050020a0060030c0080050020b00" + "70030c0090050010a0070030b0090060020a0070040c0080050020a0060030c0080050" + "020b0070030c0090050010a0070030b0090060020a0070040c0080050020a0060030c0" + "080050020b0070030c0090050000c00900909009009090090090090900900909009009" + "0090900900909009009009090090090900900900909009009090090090900900900909" + "00900909009009009090090090900900900909009009090060030c0090050010a00700" + "30b008005001090070040c0080050020a0060030c0090040010a0060030c0090050010" + "a0070030b0080050010a008005001090050020a0060030c0080040010a0060030c0090" + "050010a0070030b0080050010a0070030b008005001090070040c0080050020a006003" + "0c0080040010a0060030c0090050010a0070030b008005001090070040c0080050020a" + "0060030c0080040010a0060030c0090050010a0060030c0090050010a0070030b00800" + "5001090070040c0080050020a0060030c0080040010a0070030b0080050010a0070040" + "c0080050020a0060030c0080040010a0070030c0090050010a0070030b0080050020a0" + "060030c0080040010a0060030c0090050050020a0060030c0090050010b0070030c009" + "0050010a0070040c0080040020a0060030c0080050020a0060030c0090050010a00700" + "30b0080040020a0060040c0090050020b0070030c00a0050010a0070030b0090050020" + "a0070030c0080040020a0060030c0090050010a0070030c0090050030b007005001090" + "050020a007004001090060020c0070050c0090060030b0080040020a0060030b008004" + "0010a0060030b0080050010a0050040c0080050010a0060030c0080050010b0070030c" + "007005001090070030b0070040020a0060030c0080040020a0070030b0090050010a00" + "60040c0080050020a0060040c0080050010b0070030c007005001090070030c0080050" + "020a0070030c0090050020a0070030c0090050020a0060040c0090050020a0060040c0" + "090050010b0070030c0080050030b007004001090060020c008004002090060020a008" + "004001090050030b0080040020a0060040b0080040c00a0060020b0070050010900600" + "30b0070050020a0060020c008004002090070030c008005002090070040c0080040020" + "a0060040b0090050010a0060030b0080050020a0060040c0080050010b007003001080" + "05001090070030c0080050020a007003001090050030a0070030b0090050020a006004" + "0c0090050030b0070040c0090050010c0070040c0080060020b00700400a090060020b" + "007003002090060020a005004001090050030b007004001090050040c0080040c00a00" + "60020c007005001090060030b0070050020a0060020c008004002090060030b0080040" + "02090060030b0080040020a0060040b0080040010b0060030b0070050010a006004002" + "0700500308006004003070050030700600400307005003080060040030700500409006" + "0040030700500409006005002070050030a00600500307005004002060040020600500" + "30020600400307005004090060040030700500408007005003080050040a0060050030" + "7005004002060050030800500400206005002070050040020600500307006004002070" + "050030800600400307005004080060040a006005003080050040020700500409006004" + "002060050030b006005002070050030800600400307005004080060040030700500408" + "0060040020"
// 从公元1800年 到 公元2300年
var leapMonthList = [500]int{
38570, 3434, 1396, 21174, 4718, 51758, 6700, 7318, 44370, 6994, // 1800 - 1809
2922, 25965, 1372, 5212, 23085, 6442, 55957, 5796, 5842, 35546, // 1810 - 1819
2746, 1210, 29787, 5206, 62763, 5418, 5780, 46762, 5546, 2742, // 1820 - 1829
33975, 1198, 76375, 2646, 3370, 52629, 2900, 5482, 35437, 2396, // 1830 - 1839
5294, 27221, 6740, 64810, 6826, 2900, 46426, 4794, 2396, 38059, // 1840 - 1849
5274, 72267, 5714, 5802, 60117, 1460, 4794, 43351, 2358, 5270, // 1850 - 1859
30283, 3410, 71081, 3434, 1388, 45750, 4718, 2350, 35990, 7316, // 1860 - 1869
89418, 6994, 2906, 50541, 1372, 4700, 47405, 6442, 6804, 31562, // 1870 - 1879
5842, 60122, 2742, 1210, 45659, 4694, 5418, 39573, 5780, 5802, // 1880 - 1889
19157, 2742, 50359, 1198, 2646, 46378, 7466, 3412, 30122, 5482, // 1890 - 1899
67949, 2396, 5294, 43597, 6732, 6954, 36181, 2772, 4954, 18781, // 1900 - 1909
2396, 54427, 5274, 6730, 47781, 5800, 6868, 21210, 4790, 59703, // 1910 - 1919
2350, 5270, 46667, 3402, 3496, 38325, 1388, 4782, 18735, 2350, // 1920 - 1929
52374, 6804, 7498, 44457, 2906, 1388, 29294, 4700, 63789, 6442, // 1930 - 1939
6804, 56138, 5802, 2772, 38235, 1210, 4698, 22827, 5418, 63125, // 1940 - 1949
3476, 5802, 43701, 2484, 5302, 27223, 2646, 70954, 7466, 3412, // 1950 - 1959
54698, 5482, 2412, 38062, 5294, 2636, 32038, 6954, 60245, 2772, // 1960 - 1969
4826, 43357, 2394, 5274, 39501, 6730, 72357, 5800, 5844, 53978, // 1970 - 1979
4790, 2358, 38039, 5270, 87627, 3402, 3496, 54708, 5484, 4782, // 1980 - 1989
43311, 2350, 3222, 27978, 7498, 68965, 2904, 5484, 45677, 4700, // 1990 - 1999
6444, 39573, 6804, 6986, 19285, 2772, 62811, 1210, 4698, 47403, // 2000 - 2009
5418, 5780, 38570, 5546, 76469, 2420, 5302, 51799, 2646, 5414, // 2010 - 2019
36501, 3412, 5546, 18869, 2412, 54446, 5276, 6732, 48422, 6822, // 2020 - 2029
2900, 28010, 4826, 92509, 2394, 5274, 55883, 6730, 6820, 47956, // 2030 - 2039
5812, 2778, 18779, 2358, 62615, 5270, 5450, 46757, 3492, 5556, // 2040 - 2049
27318, 4718, 67887, 2350, 3222, 52554, 7498, 3412, 38252, 5468, // 2050 - 2059
4700, 31022, 6444, 64149, 6804, 6986, 43861, 2772, 5338, 35421, // 2060 - 2069
2650, 70955, 5418, 5780, 54954, 5546, 2740, 38074, 5302, 2646, // 2070 - 2079
29991, 3366, 61011, 3412, 5546, 43445, 2412, 5294, 35406, 6700, // 2080 - 2089
72998, 6820, 6996, 52586, 2778, 2396, 38045, 5210, 6698, 23333, // 2090 - 2099
6820, 64338, 5812, 2746, 43355, 2358, 5270, 39499, 5450, 79525, // 2100 - 2109
3492, 5548, 51894, 4718, 2350, 35991, 2710, 3402, 28069, 3412, // 2110 - 2119
62826, 5466, 2652, 47406, 5420, 6804, 40266, 6954, 93013, 2772, // 2120 - 2129
5338, 51805, 2650, 5402, 47765, 5716, 5802, 19157, 2740, 62650, // 2130 - 2139
5302, 2646, 46359, 3350, 3666, 38570, 3434, 91573, 2412, 5294, // 2140 - 2149
51758, 6700, 7446, 44370, 6994, 2922, 25965, 1372, 62557, 5210, // 2150 - 2159
6698, 55957, 5796, 6866, 35674, 2742, 83291, 2230, 5206, 54571, // 2160 - 2169
5418, 5780, 46762, 5546, 2742, 25783, 2222, 60503, 2646, 3370, // 2170 - 2179
52629, 2900, 5482, 35437, 2396, 5294, 19030, 6740, 56618, 6826, // 2180 - 2189
2900, 46442, 5338, 2396, 29867, 5274, 64075, 5714, 5802, 51925, // 2190 - 2199
1460, 4794, 35163, 2358, 78999, 3222, 3410, 54953, 3434, 1388, // 2200 - 2209
37558, 4718, 2350, 27798, 7316, 64842, 6994, 2922, 42349, 1372, // 2210 - 2219
4700, 39213, 6442, 80533, 5780, 5842, 60122, 2742, 1210, 45659, // 2220 - 2229
4694, 5418, 31381, 5780, 71338, 5546, 2742, 42167, 1198, 2646, // 2230 - 2239
38187, 3370, 93589, 2900, 5482, 51565, 2396, 5294, 43597, 6732, // 2240 - 2249
7466, 27989, 2900, 62810, 4794, 2396, 54427, 5274, 6730, 47909, // 2250 - 2259
5800, 6868, 9652, 4790, 59735, 2358, 5270, 46667, 3402, 5544, // 2260 - 2269
30389, 1388, 70326, 4718, 2350, 52374, 7316, 7498, 36265, 2906, // 2270 - 2279
1388, 21166, 4700, 55597, 6442, 6804, 47946, 5834, 2772, 30043, // 2280 - 2289
1210, 62043, 4694, 5418, 54933, 3732, 5802, 35541, 2484, 5302, // 2290 - 2299
}
// GetLeapMonth 获取闰月
func (m *TLunarDate) GetLeapMonth() int {
if m.nYear < 1800 || m.nYear > 2299 {
m.nLeapMonth = 0
return 0
}
nLeapMonth := leapMonthList[m.nYear-1800]
nLeapMonth >>= 13 // 移除掉12个农历大小月
m.nLeapMonth = nLeapMonth & 0x0F
return m.nLeapMonth
}
// GetMonthDays 获取某农历年的第N个月是大月30天还是小月29天
func (m *TLunarDate) GetMonthDays() int {
if m.nYear < 1800 || m.nYear >= 2300 {
return 0
}
if m.nMonth < 1 || m.nMonth > 13 {
return 0
}
// 如果有闰月, 并且闰月
if m.nLeapMonth == 0 && m.nMonth == 13 {
return 0
}
var nBig = leapMonthList[m.nYear-1800]
nBig = nBig >> uint8(13-m.nMonth)
// 取第一位
nBig = nBig & 1
// 如果有值(nBig == 1)那么是大月
if nBig > 0 {
return 30
}
return 29
}
// GetYearFrom64TimeStamp 从64位时间戳反推年
func (m *TLunarDate) GetYearFrom64TimeStamp(nTimeStamp int64) *TLunarDate {
// 准备进行二分法
nLow := 1900
nHigh := 2100
for {
nMid := (nLow + nHigh) / 2
v := NewLunarDate(nMid, 1, 1, 0, 0, 0).Get64TimeStamp()
if v <= nTimeStamp {
nLow = nMid
} else {
nHigh = nMid
}
if nHigh == nLow+1 {
break
}
}
m.nYear = nLow
return m
}
// GetMonthFrom64TimeStamp .
func (m *TLunarDate) GetMonthFrom64TimeStamp(nTimeStamp int64) {
// 这里开始特殊处理
// 全年一共几个月
nTotalMonth := 12
if m.nLeapMonth == 0 {
nTotalMonth++
}
for i := 1; i <= nTotalMonth-1; i++ {
if nTimeStamp < NewLunarDate(m.nYear, i+1, 1, 0, 0, 0).Get64TimeStamp() {
m.nMonth = i
m.nConventionalMonth = i
return
}
}
m.nMonth = nTotalMonth
m.nConventionalMonth = nTotalMonth
}
// GetDayTimeFrom64TimeStamp 从64位时间戳反推其他参数
func (m *TLunarDate) GetDayTimeFrom64TimeStamp(nTimeStamp int64) {
nTimeStamp -= NewLunarDate(m.nYear, m.nMonth, 1, 0, 0, 0).Get64TimeStamp()
m.nDay = int(nTimeStamp / (24 * 60 * 60))
// 扣掉日
nTimeStamp -= int64(m.nDay) * 24 * 60 * 60
m.nDay++ // 因为每个月的天数是从1开始的, 所以这里需要补1天
m.nHour = int(nTimeStamp / (60 * 60))
nTimeStamp -= int64(m.nHour) * 60 * 60
m.nMinute = int(nTimeStamp / 60)
nTimeStamp -= int64(m.nMinute) * 60
m.nSecond = int(nTimeStamp)
}
// Get64TimeStamp 获取64位时间戳
func (m *TLunarDate) Get64TimeStamp() int64 {
nAllDays := m.GetAllDays()
nResult := int64(nAllDays)
nResult *= 24 * 60 * 60 // 天数换成秒
//再计算出秒数
nResult += int64(m.nHour) * 60 * 60
nResult += int64(m.nMinute) * 60
nResult += int64(m.nSecond)
return nResult
}
var allDayList = [500][13]int{
{657097, 657127, 657156, 657186, 657216, 657245, 657275, 657304, 657334, 657363, 657393, 657422, 657452}, // 1800
{657481, 657510, 657540, 657570, 657599, 657629, 657658, 657688, 657718, 657747, 657777, 657806, 657836}, // 1801
{657836, 657865, 657894, 657924, 657953, 657983, 658012, 658042, 658072, 658102, 658131, 658161, 658190}, // 1802
{658190, 658220, 658249, 658278, 658308, 658337, 658367, 658396, 658426, 658456, 658485, 658515, 658545}, // 1803
{658574, 658604, 658633, 658662, 658692, 658721, 658750, 658780, 658810, 658839, 658869, 658899, 658929}, // 1804
{658929, 658958, 658988, 659017, 659047, 659076, 659105, 659134, 659164, 659193, 659223, 659253, 659283}, // 1805
{659312, 659342, 659372, 659401, 659431, 659460, 659489, 659518, 659548, 659577, 659607, 659637, 659666}, // 1806
{659666, 659696, 659726, 659756, 659785, 659814, 659844, 659873, 659902, 659932, 659961, 659991, 660021}, // 1807
{660021, 660050, 660080, 660110, 660139, 660169, 660198, 660228, 660257, 660287, 660316, 660345, 660375}, // 1808
{660404, 660434, 660464, 660493, 660523, 660553, 660582, 660612, 660641, 660671, 660700, 660729, 660759}, // 1809
{660759, 660788, 660818, 660847, 660877, 660907, 660936, 660966, 660996, 661025, 661055, 661084, 661114}, // 1810
{661114, 661143, 661172, 661202, 661231, 661261, 661290, 661320, 661350, 661379, 661409, 661439, 661468}, // 1811
{661498, 661527, 661556, 661586, 661615, 661645, 661674, 661704, 661733, 661763, 661793, 661823, 661852}, // 1812
{661852, 661882, 661911, 661941, 661970, 661999, 662028, 662058, 662087, 662117, 662147, 662177, 662206}, // 1813
{662206, 662236, 662266, 662295, 662325, 662354, 662383, 662412, 662442, 662471, 662501, 662531, 662560}, // 1814
{662590, 662620, 662650, 662679, 662708, 662738, 662767, 662796, 662826, 662855, 662885, 662914, 662944}, // 1815
{662944, 662974, 663004, 663033, 663063, 663092, 663122, 663151, 663180, 663210, 663239, 663269, 663298}, // 1816
{663328, 663358, 663387, 663417, 663447, 663476, 663506, 663535, 663565, 663594, 663623, 663653, 663682}, // 1817
{663682, 663712, 663741, 663771, 663801, 663830, 663860, 663890, 663919, 663949, 663978, 664007, 664037}, // 1818
{664037, 664066, 664096, 664125, 664155, 664184, 664214, 664244, 664273, 664303, 664333, 664362, 664392}, // 1819
{664421, 664450, 664480, 664509, 664539, 664568, 664598, 664627, 664657, 664687, 664717, 664746, 664776}, // 1820
{664776, 664805, 664834, 664864, 664893, 664922, 664952, 664981, 665011, 665041, 665071, 665100, 665130}, // 1821
{665130, 665160, 665189, 665219, 665248, 665277, 665306, 665336, 665365, 665395, 665425, 665454, 665484}, // 1822
{665514, 665544, 665573, 665603, 665632, 665661, 665690, 665720, 665749, 665779, 665808, 665838, 665868}, // 1823
{665868, 665898, 665927, 665957, 665986, 666016, 666045, 666074, 666104, 666133, 666163, 666192, 666222}, // 1824
{666252, 666282, 666311, 666341, 666370, 666400, 666429, 666458, 666488, 666517, 666547, 666576, 666606}, // 1825
{666606, 666636, 666665, 666695, 666725, 666754, 666784, 666813, 666842, 666872, 666901, 666931, 666960}, // 1826
{666960, 666990, 667019, 667049, 667079, 667108, 667138, 667167, 667197, 667226, 667256, 667285, 667315}, // 1827
{667344, 667374, 667403, 667433, 667462, 667492, 667522, 667551, 667581, 667610, 667640, 667669, 667699}, // 1828
{667699, 667728, 667758, 667787, 667817, 667846, 667876, 667905, 667935, 667965, 667994, 668024, 668054}, // 1829
{668054, 668083, 668112, 668142, 668171, 668200, 668230, 668259, 668289, 668319, 668348, 668378, 668408}, // 1830
{668438, 668467, 668496, 668526, 668555, 668584, 668614, 668643, 668673, 668702, 668732, 668762, 668792}, // 1831
{668792, 668821, 668851, 668880, 668910, 668939, 668968, 668998, 669027, 669057, 669086, 669116, 669146}, // 1832
{669176, 669205, 669235, 669264, 669294, 669323, 669352, 669382, 669411, 669441, 669470, 669500, 669530}, // 1833
{669530, 669559, 669589, 669619, 669648, 669678, 669707, 669736, 669766, 669795, 669825, 669854, 669884}, // 1834
{669884, 669913, 669943, 669973, 670002, 670032, 670062, 670091, 670120, 670150, 670179, 670209, 670238}, // 1835
{670268, 670297, 670327, 670356, 670386, 670416, 670445, 670475, 670504, 670534, 670563, 670593, 670622}, // 1836
{670622, 670652, 670681, 670711, 670740, 670770, 670799, 670829, 670859, 670888, 670918, 670947, 670977}, // 1837
{670977, 671006, 671036, 671065, 671095, 671124, 671153, 671183, 671213, 671242, 671272, 671302, 671331}, // 1838
{671361, 671390, 671420, 671449, 671478, 671508, 671537, 671567, 671596, 671626, 671656, 671686, 671715}, // 1839
{671715, 671745, 671774, 671804, 671833, 671862, 671892, 671921, 671951, 671980, 672010, 672040, 672070}, // 1840
{672070, 672099, 672129, 672158, 672188, 672217, 672246, 672276, 672305, 672335, 672364, 672394, 672423}, // 1841
{672453, 672483, 672513, 672542, 672572, 672601, 672630, 672660, 672689, 672719, 672748, 672778, 672807}, // 1842
{672807, 672837, 672867, 672897, 672926, 672956, 672985, 673014, 673044, 673073, 673103, 673132, 673162}, // 1843
{673191, 673221, 673251, 673280, 673310, 673339, 673369, 673398, 673428, 673457, 673487, 673516, 673546}, // 1844
{673546, 673575, 673605, 673634, 673664, 673694, 673723, 673753, 673782, 673812, 673841, 673871, 673900}, // 1845
{673900, 673930, 673959, 673989, 674018, 674048, 674077, 674107, 674136, 674166, 674196, 674225, 674255}, // 1846
{674284, 674314, 674343, 674372, 674402, 674431, 674461, 674490, 674520, 674550, 674580, 674609, 674639}, // 1847
{674639, 674668, 674698, 674727, 674756, 674786, 674815, 674845, 674874, 674904, 674934, 674964, 674993}, // 1848
{674993, 675023, 675052, 675082, 675111, 675140, 675170, 675199, 675229, 675258, 675288, 675317, 675347}, // 1849
{675377, 675407, 675436, 675466, 675495, 675524, 675554, 675583, 675612, 675642, 675672, 675701, 675731}, // 1850
{675731, 675761, 675791, 675820, 675850, 675879, 675908, 675938, 675967, 675996, 676026, 676055, 676085}, // 1851
{676115, 676145, 676174, 676204, 676234, 676263, 676292, 676322, 676351, 676381, 676410, 676439, 676469}, // 1852
{676469, 676499, 676528, 676558, 676588, 676617, 676647, 676676, 676706, 676735, 676765, 676794, 676824}, // 1853
{676824, 676853, 676883, 676912, 676942, 676971, 677001, 677031, 677060, 677090, 677119, 677149, 677178}, // 1854
{677208, 677237, 677266, 677296, 677325, 677355, 677385, 677414, 677444, 677474, 677503, 677533, 677562}, // 1855
{677562, 677592, 677621, 677650, 677680, 677709, 677739, 677768, 677798, 677828, 677858, 677887, 677917}, // 1856
{677917, 677946, 677976, 678005, 678034, 678064, 678093, 678123, 678152, 678182, 678211, 678241, 678271}, // 1857
{678301, 678330, 678360, 678389, 678418, 678448, 678477, 678506, 678536, 678566, 678595, 678625, 678655}, // 1858
{678655, 678685, 678714, 678744, 678773, 678802, 678832, 678861, 678890, 678920, 678949, 678979, 679009}, // 1859
{679009, 679039, 679068, 679098, 679128, 679157, 679186, 679216, 679245, 679274, 679304, 679333, 679363}, // 1860
{679393, 679422, 679452, 679482, 679511, 679541, 679570, 679600, 679629, 679659, 679688, 679717, 679747}, // 1861
{679747, 679777, 679806, 679836, 679865, 679895, 679925, 679954, 679984, 680013, 680043, 680072, 680101}, // 1862
{680131, 680160, 680190, 680220, 680249, 680279, 680308, 680338, 680368, 680397, 680427, 680456, 680486}, // 1863
{680486, 680515, 680544, 680574, 680603, 680633, 680662, 680692, 680722, 680751, 680781, 680811, 680840}, // 1864
{680840, 680870, 680899, 680928, 680958, 680987, 681017, 681046, 681076, 681106, 681135, 681165, 681195}, // 1865
{681224, 681254, 681283, 681312, 681342, 681371, 681400, 681430, 681460, 681489, 681519, 681549, 681579}, // 1866
{681579, 681608, 681638, 681667, 681696, 681726, 681755, 681784, 681814, 681843, 681873, 681903, 681933}, // 1867
{681933, 681962, 681992, 682022, 682051, 682080, 682110, 682139, 682168, 682198, 682227, 682257, 682287}, // 1868
{682316, 682346, 682376, 682406, 682435, 682464, 682494, 682523, 682552, 682582, 682611, 682641, 682670}, // 1869
{682670, 682700, 682730, 682760, 682789, 682819, 682848, 682878, 682907, 682936, 682966, 682995, 683025}, // 1870
{683054, 683084, 683114, 683143, 683173, 683203, 683232, 683262, 683291, 683321, 683350, 683379, 683409}, // 1871
{683409, 683438, 683468, 683497, 683527, 683557, 683586, 683616, 683645, 683675, 683705, 683734, 683764}, // 1872
{683764, 683793, 683822, 683852, 683881, 683911, 683940, 683970, 684000, 684029, 684059, 684089, 684118}, // 1873
{684148, 684177, 684206, 684236, 684265, 684295, 684324, 684354, 684383, 684413, 684443, 684473, 684502}, // 1874
{684502, 684532, 684561, 684590, 684620, 684649, 684678, 684708, 684737, 684767, 684797, 684827, 684856}, // 1875
{684856, 684886, 684916, 684945, 684974, 685004, 685033, 685062, 685092, 685121, 685151, 685181, 685210}, // 1876
{685240, 685270, 685300, 685329, 685358, 685388, 685417, 685446, 685476, 685505, 685535, 685564, 685594}, // 1877
{685594, 685624, 685654, 685683, 685713, 685742, 685772, 685801, 685830, 685860, 685889, 685919, 685948}, // 1878
{685948, 685978, 686008, 686037, 686067, 686097, 686126, 686156, 686185, 686214, 686244, 686273, 686303}, // 1879
{686332, 686362, 686391, 686421, 686451, 686480, 686510, 686540, 686569, 686599, 686628, 686657, 686687}, // 1880
{686687, 686716, 686746, 686775, 686805, 686834, 686864, 686894, 686923, 686953, 686983, 687012, 687042}, // 1881
{687071, 687100, 687130, 687159, 687189, 687218, 687248, 687277, 687307, 687337, 687366, 687396, 687426}, // 1882
{687426, 687455, 687484, 687514, 687543, 687572, 687602, 687631, 687661, 687691, 687721, 687750, 687780}, // 1883
{687780, 687810, 687839, 687868, 687898, 687927, 687956, 687986, 688015, 688045, 688075, 688104, 688134}, // 1884
{688164, 688194, 688223, 688252, 688282, 688311, 688340, 688370, 688399, 688429, 688458, 688488, 688518}, // 1885
{688518, 688548, 688577, 688607, 688636, 688666, 688695, 688724, 688754, 688783, 688813, 688842, 688872}, // 1886
{688872, 688902, 688932, 688961, 688991, 689020, 689050, 689079, 689108, 689138, 689167, 689197, 689226}, // 1887
{689256, 689286, 689315, 689345, 689375, 689404, 689434, 689463, 689492, 689522, 689551, 689581, 689610}, // 1888
{689610, 689640, 689669, 689699, 689729, 689758, 689788, 689817, 689847, 689876, 689906, 689935, 689965}, // 1889
{689965, 689994, 690024, 690053, 690083, 690112, 690142, 690172, 690201, 690231, 690260, 690290, 690319}, // 1890
{690349, 690378, 690408, 690437, 690467, 690496, 690526, 690555, 690585, 690615, 690644, 690674, 690704}, // 1891
{690704, 690733, 690762, 690792, 690821, 690850, 690880, 690909, 690939, 690969, 690998, 691028, 691058}, // 1892
{691088, 691117, 691146, 691176, 691205, 691234, 691264, 691293, 691323, 691352, 691382, 691412, 691442}, // 1893
{691442, 691471, 691501, 691530, 691560, 691589, 691618, 691648, 691677, 691707, 691736, 691766, 691796}, // 1894
{691796, 691826, 691855, 691885, 691914, 691944, 691973, 692002, 692032, 692061, 692091, 692120, 692150}, // 1895
{692179, 692209, 692239, 692269, 692298, 692328, 692357, 692386, 692416, 692445, 692475, 692504, 692534}, // 1896
{692534, 692563, 692593, 692623, 692652, 692682, 692711, 692741, 692770, 692800, 692829, 692859, 692888}, // 1897
{692888, 692918, 692947, 692977, 693006, 693036, 693066, 693095, 693125, 693154, 693184, 693213, 693243}, // 1898
{693272, 693302, 693331, 693361, 693390, 693420, 693449, 693479, 693509, 693538, 693568, 693597, 693627}, // 1899
{693627, 693656, 693686, 693715, 693744, 693774, 693803, 693833, 693863, 693892, 693922, 693952, 693981}, // 1900
{694011, 694040, 694070, 694099, 694128, 694158, 694187, 694217, 694246, 694276, 694306, 694336, 694365}, // 1901
{694365, 694395, 694424, 694454, 694483, 694512, 694542, 694571, 694601, 694630, 694660, 694690, 694720}, // 1902
{694720, 694749, 694779, 694808, 694838, 694867, 694896, 694926, 694955, 694984, 695014, 695044, 695073}, // 1903
{695103, 695133, 695163, 695192, 695222, 695251, 695280, 695310, 695339, 695368, 695398, 695428, 695457}, // 1904
{695457, 695487, 695517, 695546, 695576, 695606, 695635, 695664, 695694, 695723, 695753, 695782, 695812}, // 1905
{695812, 695841, 695871, 695901, 695930, 695960, 695989, 696019, 696048, 696078, 696107, 696137, 696166}, // 1906
{696196, 696225, 696255, 696284, 696314, 696343, 696373, 696403, 696432, 696462, 696491, 696521, 696550}, // 1907
{696550, 696580, 696609, 696638, 696668, 696698, 696727, 696757, 696786, 696816, 696846, 696875, 696905}, // 1908
{696905, 696934, 696964, 696993, 697022, 697052, 697081, 697111, 697140, 697170, 697200, 697230, 697259}, // 1909
{697289, 697318, 697348, 697377, 697406, 697436, 697465, 697495, 697524, 697554, 697584, 697614, 697643}, // 1910
{697643, 697673, 697702, 697732, 697761, 697790, 697820, 697849, 697878, 697908, 697938, 697967, 697997}, // 1911
{698027, 698057, 698086, 698116, 698145, 698174, 698204, 698233, 698262, 698292, 698322, 698351, 698381}, // 1912
{698381, 698411, 698441, 698470, 698500, 698529, 698558, 698588, 698617, 698646, 698676, 698705, 698735}, // 1913
{698735, 698765, 698795, 698824, 698854, 698883, 698913, 698942, 698972, 699001, 699030, 699060, 699089}, // 1914
{699119, 699149, 699178, 699208, 699238, 699267, 699297, 699326, 699356, 699385, 699415, 699444, 699473}, // 1915
{699473, 699503, 699533, 699562, 699592, 699621, 699651, 699681, 699710, 699740, 699769, 699799, 699828}, // 1916
{699828, 699858, 699887, 699916, 699946, 699975, 700005, 700035, 700064, 700094, 700124, 700153, 700183}, // 1917
{700212, 700242, 700271, 700300, 700330, 700359, 700389, 700418, 700448, 700478, 700507, 700537, 700567}, // 1918
{700567, 700596, 700626, 700655, 700684, 700714, 700743, 700772, 700802, 700832, 700861, 700891, 700921}, // 1919
{700951, 700980, 701010, 701039, 701068, 701098, 701127, 701156, 701186, 701215, 701245, 701275, 701305}, // 1920
{701305, 701335, 701364, 701394, 701423, 701452, 701482, 701511, 701540, 701570, 701599, 701629, 701659}, // 1921
{701659, 701689, 701718, 701748, 701778, 701807, 701836, 701866, 701895, 701924, 701954, 701983, 702013}, // 1922
{702043, 702072, 702102, 702132, 702161, 702191, 702220, 702250, 702279, 702308, 702338, 702367, 702397}, // 1923
{702397, 702426, 702456, 702486, 702515, 702545, 702575, 702604, 702634, 702663, 702693, 702722, 702751}, // 1924
{702751, 702781, 702810, 702840, 702869, 702899, 702929, 702958, 702988, 703018, 703047, 703077, 703106}, // 1925
{703136, 703165, 703194, 703224, 703253, 703283, 703312, 703342, 703372, 703401, 703431, 703461, 703490}, // 1926
{703490, 703520, 703549, 703578, 703608, 703637, 703667, 703696, 703726, 703755, 703785, 703815, 703845}, // 1927
{703845, 703874, 703904, 703933, 703962, 703992, 704021, 704050, 704080, 704109, 704139, 704169, 704199}, // 1928
{704229, 704258, 704288, 704317, 704346, 704376, 704405, 704434, 704464, 704493, 704523, 704553, 704583}, // 1929
{704583, 704612, 704642, 704672, 704701, 704730, 704760, 704789, 704818, 704848, 704877, 704907, 704937}, // 1930
{704966, 704996, 705026, 705055, 705085, 705114, 705144, 705173, 705202, 705232, 705261, 705291, 705320}, // 1931
{705320, 705350, 705380, 705410, 705439, 705469, 705498, 705528, 705557, 705586, 705616, 705645, 705675}, // 1932
{705675, 705704, 705734, 705764, 705793, 705823, 705853, 705882, 705912, 705941, 705971, 706000, 706029}, // 1933
{706059, 706088, 706118, 706147, 706177, 706207, 706236, 706266, 706295, 706325, 706355, 706384, 706414}, // 1934
{706414, 706443, 706472, 706502, 706531, 706561, 706590, 706620, 706650, 706679, 706709, 706739, 706768}, // 1935
{706768, 706798, 706827, 706856, 706886, 706915, 706944, 706974, 707004, 707033, 707063, 707093, 707123}, // 1936
{707152, 707182, 707211, 707240, 707270, 707299, 707328, 707358, 707387, 707417, 707447, 707477, 707506}, // 1937
{707506, 707536, 707566, 707595, 707624, 707654, 707683, 707712, 707742, 707771, 707801, 707831, 707860}, // 1938
{707890, 707920, 707950, 707979, 708008, 708038, 708067, 708096, 708126, 708155, 708185, 708214, 708244}, // 1939
{708244, 708274, 708304, 708333, 708363, 708392, 708422, 708451, 708480, 708510, 708539, 708569, 708598}, // 1940
{708598, 708628, 708658, 708687, 708717, 708747, 708776, 708806, 708835, 708864, 708894, 708923, 708953}, // 1941
{708982, 709012, 709041, 709071, 709101, 709130, 709160, 709189, 709219, 709248, 709278, 709307, 709337}, // 1942
{709337, 709366, 709396, 709425, 709455, 709484, 709514, 709544, 709573, 709603, 709632, 709662, 709691}, // 1943
{709691, 709721, 709750, 709780, 709809, 709839, 709868, 709898, 709927, 709957, 709987, 710016, 710046}, // 1944
{710076, 710105, 710134, 710164, 710193, 710222, 710252, 710281, 710311, 710341, 710371, 710400, 710430}, // 1945
{710430, 710460, 710489, 710518, 710548, 710577, 710606, 710636, 710665, 710695, 710725, 710754, 710784}, // 1946
{710784, 710814, 710844, 710873, 710902, 710932, 710961, 710990, 711020, 711049, 711079, 711108, 711138}, // 1947
{711168, 711198, 711227, 711257, 711286, 711316, 711345, 711374, 711404, 711433, 711463, 711492, 711522}, // 1948
{711522, 711552, 711581, 711611, 711641, 711670, 711700, 711729, 711758, 711788, 711817, 711847, 711876}, // 1949
{711906, 711935, 711965, 711995, 712024, 712054, 712084, 712113, 712142, 712172, 712201, 712231, 712260}, // 1950
{712260, 712290, 712319, 712349, 712379, 712408, 712438, 712467, 712497, 712526, 712556, 712585, 712615}, // 1951
{712615, 712644, 712674, 712703, 712733, 712762, 712792, 712821, 712851, 712881, 712910, 712940, 712969}, // 1952
{712999, 713028, 713058, 713087, 713116, 713146, 713176, 713205, 713235, 713265, 713294, 713324, 713353}, // 1953
{713353, 713383, 713412, 713442, 713471, 713500, 713530, 713559, 713589, 713619, 713648, 713678, 713708}, // 1954
{713708, 713737, 713767, 713796, 713826, 713855, 713884, 713914, 713943, 713973, 714002, 714032, 714062}, // 1955
{714092, 714121, 714151, 714180, 714210, 714239, 714268, 714298, 714327, 714357, 714386, 714416, 714446}, // 1956
{714446, 714476, 714505, 714535, 714564, 714594, 714623, 714652, 714682, 714711, 714741, 714770, 714800}, // 1957
{714829, 714859, 714889, 714919, 714948, 714978, 715007, 715036, 715066, 715095, 715125, 715154, 715184}, // 1958
{715184, 715213, 715243, 715273, 715302, 715332, 715361, 715391, 715420, 715450, 715479, 715509, 715538}, // 1959
{715538, 715568, 715597, 715627, 715656, 715686, 715716, 715745, 715775, 715804, 715834, 715863, 715893}, // 1960
{715922, 715952, 715981, 716011, 716040, 716070, 716099, 716129, 716159, 716188, 716218, 716247, 716277}, // 1961
{716277, 716306, 716336, 716365, 716394, 716424, 716453, 716483, 716513, 716542, 716572, 716602, 716631}, // 1962
{716631, 716661, 716690, 716720, 716749, 716778, 716808, 716837, 716867, 716896, 716926, 716956, 716986}, // 1963
{717015, 717045, 717074, 717104, 717133, 717162, 717192, 717221, 717251, 717280, 717310, 717340, 717370}, // 1964
{717370, 717399, 717429, 717458, 717488, 717517, 717546, 717576, 717605, 717634, 717664, 717694, 717723}, // 1965
{717723, 717753, 717783, 717813, 717842, 717872, 717901, 717930, 717960, 717989, 718018, 718048, 718078}, // 1966
{718107, 718137, 718167, 718196, 718226, 718256, 718285, 718314, 718344, 718373, 718403, 718432, 718462}, // 1967
{718462, 718491, 718521, 718550, 718580, 718610, 718639, 718669, 718698, 718728, 718757, 718787, 718816}, // 1968
{718846, 718875, 718905, 718934, 718964, 718993, 719023, 719053, 719082, 719112, 719141, 719171, 719200}, // 1969
{719200, 719230, 719259, 719288, 719318, 719347, 719377, 719407, 719436, 719466, 719496, 719525, 719555}, // 1970
{719555, 719584, 719614, 719643, 719672, 719702, 719731, 719761, 719790, 719820, 719850, 719880, 719909}, // 1971
{719939, 719968, 719998, 720027, 720056, 720086, 720115, 720145, 720174, 720204, 720234, 720263, 720293}, // 1972
{720293, 720323, 720352, 720382, 720411, 720440, 720470, 720499, 720528, 720558, 720588, 720617, 720647}, // 1973
{720647, 720677, 720707, 720736, 720766, 720795, 720824, 720854, 720883, 720912, 720942, 720972, 721001}, // 1974
{721031, 721061, 721091, 721120, 721150, 721179, 721208, 721238, 721267, 721296, 721326, 721355, 721385}, // 1975
{721385, 721415, 721445, 721474, 721504, 721533, 721563, 721592, 721622, 721651, 721680, 721710, 721739}, // 1976
{721769, 721799, 721828, 721858, 721888, 721917, 721947, 721976, 722006, 722035, 722065, 722094, 722123}, // 1977
{722123, 722153, 722182, 722212, 722242, 722271, 722301, 722331, 722360, 722390, 722419, 722449, 722478}, // 1978
{722478, 722508, 722537, 722566, 722596, 722625, 722655, 722685, 722714, 722744, 722774, 722803, 722833}, // 1979
{722862, 722892, 722921, 722950, 722980, 723009, 723039, 723068, 723098, 723128, 723157, 723187, 723217}, // 1980
{723217, 723246, 723276, 723305, 723334, 723364, 723393, 723422, 723452, 723482, 723511, 723541, 723571}, // 1981
{723571, 723601, 723630, 723660, 723689, 723718, 723748, 723777, 723806, 723836, 723865, 723895, 723925}, // 1982
{723955, 723985, 724014, 724044, 724073, 724102, 724132, 724161, 724190, 724220, 724249, 724279, 724309}, // 1983
{724309, 724339, 724368, 724398, 724428, 724457, 724486, 724516, 724545, 724574, 724604, 724633, 724663}, // 1984
{724693, 724722, 724752, 724782, 724811, 724841, 724870, 724900, 724929, 724958, 724988, 725017, 725047}, // 1985
{725047, 725076, 725106, 725136, 725165, 725195, 725225, 725254, 725284, 725313, 725343, 725372, 725401}, // 1986
{725401, 725431, 725460, 725490, 725519, 725549, 725579, 725608, 725638, 725668, 725697, 725727, 725756}, // 1987
{725785, 725815, 725844, 725874, 725903, 725933, 725962, 725992, 726022, 726051, 726081, 726111, 726140}, // 1988
{726140, 726170, 726199, 726228, 726258, 726287, 726317, 726346, 726376, 726405, 726435, 726465, 726495}, // 1989
{726495, 726524, 726554, 726583, 726612, 726642, 726671, 726700, 726730, 726759, 726789, 726819, 726849}, // 1990
{726879, 726908, 726938, 726967, 726996, 727026, 727055, 727084, 727114, 727143, 727173, 727203, 727233}, // 1991
{727233, 727262, 727292, 727322, 727351, 727380, 727410, 727439, 727468, 727498, 727527, 727557, 727587}, // 1992
{727587, 727616, 727646, 727676, 727705, 727735, 727764, 727794, 727823, 727852, 727882, 727911, 727941}, // 1993
{727970, 728000, 728030, 728060, 728089, 728119, 728148, 728178, 728207, 728236, 728266, 728295, 728325}, // 1994
{728325, 728354, 728384, 728414, 728443, 728473, 728502, 728532, 728562, 728591, 728620, 728650, 728679}, // 1995
{728709, 728738, 728768, 728797, 728827, 728857, 728886, 728916, 728945, 728975, 729005, 729034, 729063}, // 1996
{729063, 729093, 729122, 729152, 729181, 729211, 729240, 729270, 729300, 729329, 729359, 729389, 729418}, // 1997
{729418, 729448, 729477, 729506, 729536, 729565, 729594, 729624, 729654, 729683, 729713, 729743, 729772}, // 1998
{729802, 729832, 729861, 729890, 729920, 729949, 729978, 730008, 730037, 730067, 730097, 730127, 730156}, // 1999
{730156, 730186, 730216, 730245, 730274, 730304, 730333, 730362, 730392, 730421, 730451, 730481, 730510}, // 2000
{730510, 730540, 730570, 730599, 730629, 730658, 730688, 730717, 730746, 730776, 730805, 730835, 730864}, // 2001
{730894, 730924, 730954, 730983, 731013, 731042, 731072, 731101, 731130, 731160, 731189, 731219, 731248}, // 2002
{731248, 731278, 731308, 731337, 731367, 731397, 731426, 731456, 731485, 731514, 731544, 731573, 731603}, // 2003
{731603, 731632, 731662, 731691, 731721, 731751, 731780, 731810, 731839, 731869, 731898, 731928, 731957}, // 2004
{731987, 732016, 732046, 732075, 732105, 732134, 732164, 732194, 732223, 732253, 732282, 732312, 732341}, // 2005
{732341, 732371, 732400, 732430, 732459, 732489, 732518, 732548, 732577, 732607, 732637, 732666, 732696}, // 2006
{732726, 732755, 732784, 732814, 732843, 732872, 732902, 732931, 732961, 732991, 733021, 733050, 733080}, // 2007
{733080, 733110, 733139, 733168, 733198, 733227, 733256, 733286, 733315, 733345, 733375, 733404, 733434}, // 2008
{733434, 733464, 733494, 733523, 733552, 733582, 733611, 733640, 733670, 733699, 733729, 733758, 733788}, // 2009
{733818, 733848, 733877, 733907, 733936, 733966, 733995, 734024, 734054, 734083, 734113, 734142, 734172}, // 2010
{734172, 734202, 734231, 734261, 734291, 734320, 734350, 734379, 734408, 734438, 734467, 734497, 734526}, // 2011
{734526, 734556, 734585, 734615, 734645, 734674, 734704, 734733, 734763, 734792, 734822, 734851, 734881}, // 2012
{734910, 734940, 734969, 734999, 735028, 735058, 735088, 735117, 735147, 735176, 735206, 735235, 735265}, // 2013
{735265, 735294, 735324, 735353, 735383, 735412, 735442, 735471, 735501, 735531, 735560, 735590, 735619}, // 2014
{735649, 735678, 735708, 735737, 735766, 735796, 735825, 735855, 735885, 735915, 735944, 735974, 736003}, // 2015
{736003, 736033, 736062, 736092, 736121, 736150, 736180, 736209, 736239, 736269, 736298, 736328, 736358}, // 2016
{736358, 736387, 736417, 736446, 736476, 736505, 736534, 736564, 736593, 736623, 736652, 736682, 736712}, // 2017
{736742, 736771, 736801, 736830, 736860, 736889, 736918, 736948, 736977, 737007, 737036, 737066, 737096}, // 2018
{737096, 737126, 737155, 737185, 737214, 737244, 737273, 737302, 737332, 737361, 737390, 737420, 737450}, // 2019
{737450, 737479, 737509, 737539, 737569, 737598, 737628, 737657, 737686, 737716, 737745, 737775, 737804}, // 2020
{737834, 737863, 737893, 737923, 737952, 737982, 738011, 738041, 738070, 738100, 738129, 738159, 738188}, // 2021
{738188, 738218, 738247, 738277, 738306, 738336, 738366, 738395, 738425, 738454, 738484, 738513, 738543}, // 2022
{738543, 738572, 738602, 738631, 738660, 738690, 738720, 738749, 738779, 738809, 738838, 738868, 738897}, // 2023
{738927, 738956, 738986, 739015, 739044, 739074, 739103, 739133, 739163, 739192, 739222, 739252, 739281}, // 2024
{739281, 739311, 739340, 739370, 739399, 739428, 739458, 739487, 739517, 739546, 739576, 739606, 739636}, // 2025
{739665, 739695, 739724, 739754, 739783, 739812, 739842, 739871, 739900, 739930, 739960, 739990, 740019}, // 2026
{740019, 740049, 740079, 740108, 740138, 740167, 740196, 740226, 740255, 740284, 740314, 740344, 740373}, // 2027
{740373, 740403, 740433, 740463, 740492, 740522, 740551, 740580, 740610, 740639, 740668, 740698, 740728}, // 2028
{740757, 740787, 740817, 740846, 740876, 740905, 740935, 740964, 740994, 741023, 741052, 741082, 741112}, // 2029
{741112, 741141, 741171, 741200, 741230, 741260, 741289, 741319, 741348, 741378, 741407, 741437, 741466}, // 2030
{741466, 741495, 741525, 741555, 741584, 741614, 741643, 741673, 741703, 741732, 741762, 741791, 741821}, // 2031
{741850, 741880, 741909, 741938, 741968, 741997, 742027, 742057, 742086, 742116, 742146, 742175, 742205}, // 2032
{742205, 742234, 742264, 742293, 742322, 742352, 742381, 742411, 742440, 742470, 742500, 742530, 742559}, // 2033
{742589, 742618, 742648, 742677, 742706, 742736, 742765, 742795, 742824, 742854, 742884, 742913, 742943}, // 2034
{742943, 742973, 743002, 743032, 743061, 743090, 743120, 743149, 743178, 743208, 743238, 743267, 743297}, // 2035
{743297, 743327, 743357, 743386, 743416, 743445, 743474, 743504, 743533, 743562, 743592, 743621, 743651}, // 2036
{743681, 743711, 743741, 743770, 743800, 743829, 743858, 743888, 743917, 743946, 743976, 744005, 744035}, // 2037
{744035, 744065, 744095, 744124, 744154, 744183, 744213, 744242, 744272, 744301, 744330, 744360, 744389}, // 2038
{744389, 744419, 744449, 744478, 744508, 744538, 744567, 744597, 744626, 744656, 744685, 744715, 744744}, // 2039
{744773, 744803, 744832, 744862, 744892, 744921, 744951, 744980, 745010, 745040, 745069, 745099, 745128}, // 2040
{745128, 745157, 745187, 745216, 745246, 745275, 745305, 745335, 745364, 745394, 745424, 745453, 745483}, // 2041
{745483, 745512, 745542, 745571, 745600, 745630, 745659, 745689, 745718, 745748, 745778, 745807, 745837}, // 2042
{745867, 745896, 745926, 745955, 745984, 746014, 746043, 746072, 746102, 746132, 746161, 746191, 746221}, // 2043
{746221, 746251, 746280, 746310, 746339, 746368, 746398, 746427, 746456, 746486, 746515, 746545, 746575}, // 2044
{746605, 746635, 746664, 746694, 746723, 746752, 746782, 746811, 746840, 746870, 746899, 746929, 746959}, // 2045
{746959, 746989, 747018, 747048, 747077, 747107, 747136, 747166, 747195, 747224, 747254, 747283, 747313}, // 2046
{747313, 747343, 747372, 747402, 747432, 747461, 747491, 747520, 747550, 747579, 747608, 747638, 747667}, // 2047
{747697, 747726, 747756, 747786, 747815, 747845, 747875, 747904, 747934, 747963, 747992, 748022, 748051}, // 2048
{748051, 748081, 748110, 748140, 748169, 748199, 748229, 748258, 748288, 748318, 748347, 748377, 748406}, // 2049
{748406, 748435, 748465, 748494, 748524, 748553, 748583, 748612, 748642, 748672, 748701, 748731, 748761}, // 2050
{748790, 748820, 748849, 748878, 748908, 748937, 748966, 748996, 749026, 749055, 749085, 749115, 749145}, // 2051
{749145, 749174, 749204, 749233, 749262, 749292, 749321, 749350, 749380, 749409, 749439, 749469, 749499}, // 2052
{749529, 749558, 749588, 749617, 749646, 749676, 749705, 749734, 749764, 749793, 749823, 749853, 749883}, // 2053
{749883, 749912, 749942, 749972, 750001, 750030, 750060, 750089, 750118, 750148, 750177, 750207, 750237}, // 2054
{750237, 750266, 750296, 750326, 750355, 750385, 750414, 750444, 750473, 750502, 750532, 750561, 750591}, // 2055
{750620, 750650, 750680, 750710, 750739, 750769, 750798, 750828, 750857, 750886, 750916, 750945, 750975}, // 2056
{750975, 751004, 751034, 751064, 751093, 751123, 751152, 751182, 751211, 751241, 751270, 751300, 751329}, // 2057
{751329, 751359, 751388, 751418, 751447, 751477, 751506, 751536, 751566, 751595, 751625, 751655, 751684}, // 2058
{751713, 751743, 751772, 751802, 751831, 751861, 751890, 751920, 751949, 751979, 752009, 752039, 752068}, // 2059
{752068, 752098, 752127, 752156, 752186, 752215, 752244, 752274, 752303, 752333, 752363, 752393, 752422}, // 2060
{752422, 752452, 752482, 752511, 752540, 752570, 752599, 752628, 752658, 752687, 752717, 752747, 752777}, // 2061
{752806, 752836, 752866, 752895, 752924, 752954, 752983, 753012, 753042, 753071, 753101, 753131, 753160}, // 2062
{753160, 753190, 753220, 753249, 753279, 753308, 753338, 753367, 753396, 753426, 753455, 753485, 753514}, // 2063
{753544, 753574, 753604, 753633, 753663, 753692, 753722, 753751, 753780, 753810, 753839, 753869, 753898}, // 2064
{753898, 753928, 753958, 753987, 754017, 754047, 754076, 754106, 754135, 754164, 754194, 754223, 754253}, // 2065
{754253, 754282, 754312, 754341, 754371, 754401, 754430, 754460, 754489, 754519, 754548, 754578, 754607}, // 2066
{754637, 754666, 754696, 754725, 754755, 754784, 754814, 754844, 754873, 754903, 754932, 754962, 754991}, // 2067
{754991, 755021, 755050, 755080, 755109, 755138, 755168, 755198, 755227, 755257, 755287, 755316, 755346}, // 2068
{755346, 755375, 755405, 755434, 755464, 755493, 755522, 755552, 755581, 755611, 755641, 755671, 755700}, // 2069
{755730, 755759, 755789, 755818, 755848, 755877, 755906, 755936, 755965, 755995, 756025, 756054, 756084}, // 2070
{756084, 756114, 756143, 756173, 756202, 756232, 756261, 756290, 756320, 756349, 756379, 756408, 756438}, // 2071
{756468, 756498, 756527, 756557, 756586, 756616, 756645, 756674, 756704, 756733, 756763, 756792, 756822}, // 2072
{756822, 756852, 756881, 756911, 756941, 756970, 757000, 757029, 757058, 757088, 757117, 757147, 757176}, // 2073
{757176, 757206, 757235, 757265, 757295, 757324, 757354, 757383, 757413, 757442, 757472, 757501, 757531}, // 2074
{757560, 757590, 757619, 757649, 757678, 757708, 757738, 757767, 757797, 757826, 757856, 757885, 757915}, // 2075
{757915, 757944, 757974, 758003, 758033, 758062, 758092, 758121, 758151, 758181, 758210, 758240, 758269}, // 2076
{758269, 758299, 758328, 758358, 758387, 758416, 758446, 758475, 758505, 758535, 758565, 758594, 758624}, // 2077
{758653, 758683, 758712, 758742, 758771, 758800, 758830, 758859, 758889, 758919, 758948, 758978, 759008}, // 2078
{759008, 759037, 759067, 759096, 759126, 759155, 759184, 759214, 759243, 759273, 759302, 759332, 759362}, // 2079
{759362, 759392, 759421, 759451, 759480, 759510, 759539, 759568, 759598, 759627, 759656, 759686, 759716}, // 2080
{759746, 759775, 759805, 759835, 759864, 759894, 759923, 759952, 759982, 760011, 760040, 760070, 760100}, // 2081
{760100, 760129, 760159, 760189, 760219, 760248, 760277, 760307, 760336, 760366, 760395, 760424, 760454}, // 2082
{760484, 760513, 760543, 760573, 760602, 760632, 760661, 760691, 760720, 760750, 760779, 760809, 760838}, // 2083
{760838, 760868, 760897, 760927, 760956, 760986, 761016, 761045, 761075, 761104, 761134, 761163, 761193}, // 2084
{761193, 761222, 761252, 761281, 761310, 761340, 761370, 761399, 761429, 761459, 761488, 761518, 761547}, // 2085
{761577, 761606, 761636, 761665, 761694, 761724, 761753, 761783, 761813, 761842, 761872, 761902, 761931}, // 2086
{761931, 761961, 761990, 762020, 762049, 762078, 762108, 762137, 762167, 762196, 762226, 762256, 762286}, // 2087
{762286, 762315, 762345, 762374, 762404, 762433, 762462, 762492, 762521, 762550, 762580, 762610, 762640}, // 2088
{762669, 762699, 762729, 762758, 762788, 762817, 762846, 762875, 762905, 762934, 762964, 762994, 763023}, // 2089
{763023, 763053, 763083, 763113, 763142, 763172, 763201, 763230, 763260, 763289, 763318, 763348, 763378}, // 2090
{763407, 763437, 763467, 763496, 763526, 763555, 763585, 763614, 763644, 763673, 763702, 763732, 763761}, // 2091
{763761, 763791, 763821, 763850, 763880, 763910, 763939, 763969, 763998, 764028, 764057, 764087, 764116}, // 2092
{764116, 764145, 764175, 764205, 764234, 764264, 764293, 764323, 764353, 764382, 764412, 764441, 764471}, // 2093
{764500, 764529, 764559, 764588, 764618, 764647, 764677, 764707, 764736, 764766, 764796, 764825, 764855}, // 2094
{764855, 764884, 764914, 764943, 764972, 765002, 765031, 765061, 765090, 765120, 765150, 765180, 765209}, // 2095
{765209, 765239, 765268, 765298, 765327, 765356, 765386, 765415, 765444, 765474, 765504, 765534, 765563}, // 2096
{765593, 765623, 765652, 765682, 765711, 765740, 765769, 765799, 765828, 765858, 765888, 765917, 765947}, // 2097
{765947, 765977, 766007, 766036, 766066, 766095, 766124, 766153, 766183, 766212, 766242, 766271, 766301}, // 2098
{766301, 766331, 766361, 766390, 766420, 766450, 766479, 766508, 766538, 766567, 766596, 766626, 766655}, // 2099
{766685, 766715, 766745, 766774, 766804, 766833, 766863, 766892, 766922, 766951, 766980, 767010, 767039}, // 2100
{767039, 767069, 767099, 767128, 767158, 767188, 767217, 767247, 767276, 767306, 767335, 767364, 767394}, // 2101
{767423, 767453, 767482, 767512, 767542, 767571, 767601, 767630, 767660, 767690, 767719, 767749, 767778}, // 2102
{767778, 767807, 767837, 767866, 767896, 767925, 767955, 767984, 768014, 768044, 768074, 768103, 768133}, // 2103
{768133, 768162, 768192, 768221, 768250, 768280, 768309, 768339, 768368, 768398, 768428, 768457, 768487}, // 2104
{768517, 768546, 768576, 768605, 768634, 768664, 768693, 768722, 768752, 768782, 768811, 768841, 768871}, // 2105
{768871, 768901, 768930, 768960, 768989, 769018, 769048, 769077, 769106, 769136, 769165, 769195, 769225}, // 2106
{769225, 769255, 769285, 769314, 769344, 769373, 769402, 769432, 769461, 769490, 769520, 769549, 769579}, // 2107
{769609, 769639, 769668, 769698, 769727, 769757, 769786, 769816, 769845, 769874, 769904, 769933, 769963}, // 2108
{769963, 769993, 770022, 770052, 770082, 770111, 770141, 770170, 770200, 770229, 770258, 770288, 770317}, // 2109
{770347, 770376, 770406, 770436, 770465, 770495, 770525, 770554, 770584, 770613, 770642, 770672, 770701}, // 2110
{770701, 770731, 770760, 770790, 770819, 770849, 770879, 770908, 770938, 770967, 770997, 771027, 771056}, // 2111
{771056, 771085, 771115, 771144, 771174, 771203, 771233, 771262, 771292, 771322, 771351, 771381, 771411}, // 2112
{771440, 771470, 771499, 771528, 771558, 771587, 771616, 771646, 771676, 771705, 771735, 771765, 771795}, // 2113
{771795, 771824, 771854, 771883, 771912, 771942, 771971, 772000, 772030, 772059, 772089, 772119, 772149}, // 2114
{772149, 772178, 772208, 772238, 772267, 772296, 772326, 772355, 772384, 772414, 772443, 772473, 772503}, // 2115
{772533, 772562, 772592, 772621, 772651, 772680, 772710, 772739, 772768, 772798, 772827, 772857, 772887}, // 2116
{772887, 772916, 772946, 772976, 773005, 773035, 773064, 773094, 773123, 773152, 773182, 773211, 773241}, // 2117
{773241, 773270, 773300, 773330, 773359, 773389, 773419, 773448, 773478, 773507, 773536, 773566, 773595}, // 2118
{773625, 773654, 773684, 773714, 773743, 773773, 773802, 773832, 773861, 773891, 773920, 773950, 773979}, // 2119
{773979, 774009, 774038, 774068, 774097, 774127, 774156, 774186, 774216, 774245, 774275, 774304, 774334}, // 2120
{774363, 774393, 774422, 774452, 774481, 774511, 774540, 774570, 774599, 774629, 774659, 774688, 774718}, // 2121
{774718, 774747, 774777, 774806, 774836, 774865, 774894, 774924, 774953, 774983, 775013, 775043, 775072}, // 2122
{775072, 775102, 775132, 775161, 775190, 775220, 775249, 775278, 775308, 775337, 775367, 775397, 775427}, // 2123
{775456, 775486, 775515, 775545, 775574, 775604, 775633, 775662, 775692, 775721, 775751, 775781, 775810}, // 2124
{775810, 775840, 775870, 775899, 775929, 775958, 775988, 776017, 776046, 776076, 776105, 776135, 776164}, // 2125
{776164, 776194, 776224, 776254, 776283, 776313, 776342, 776372, 776401, 776430, 776460, 776489, 776519}, // 2126
{776548, 776578, 776608, 776637, 776667, 776697, 776726, 776755, 776785, 776814, 776844, 776873, 776903}, // 2127
{776903, 776932, 776962, 776991, 777021, 777051, 777080, 777110, 777139, 777169, 777198, 777228, 777257}, // 2128
{777287, 777316, 777346, 777375, 777405, 777434, 777464, 777494, 777523, 777553, 777582, 777612, 777641}, // 2129
{777641, 777671, 777700, 777730, 777759, 777788, 777818, 777848, 777877, 777907, 777937, 777966, 777996}, // 2130
{777996, 778025, 778055, 778084, 778114, 778143, 778172, 778202, 778231, 778261, 778291, 778321, 778350}, // 2131
{778380, 778409, 778439, 778468, 778498, 778527, 778556, 778586, 778615, 778645, 778675, 778704, 778734}, // 2132
{778734, 778764, 778793, 778823, 778852, 778882, 778911, 778940, 778969, 778999, 779029, 779058, 779088}, // 2133
{779088, 779118, 779148, 779177, 779207, 779236, 779266, 779295, 779324, 779354, 779383, 779413, 779442}, // 2134
{779472, 779502, 779531, 779561, 779591, 779620, 779649, 779679, 779708, 779738, 779767, 779797, 779826}, // 2135
{779826, 779856, 779885, 779915, 779945, 779974, 780004, 780033, 780063, 780092, 780122, 780151, 780181}, // 2136
{780181, 780210, 780240, 780269, 780299, 780328, 780358, 780388, 780417, 780447, 780476, 780506, 780535}, // 2137
{780565, 780594, 780624, 780653, 780683, 780712, 780742, 780771, 780801, 780831, 780860, 780890, 780919}, // 2138
{780919, 780949, 780978, 781008, 781037, 781066, 781096, 781125, 781155, 781185, 781215, 781244, 781274}, // 2139
{781303, 781333, 781362, 781392, 781421, 781450, 781480, 781509, 781539, 781569, 781598, 781628, 781658}, // 2140
{781658, 781687, 781717, 781746, 781776, 781805, 781834, 781864, 781893, 781923, 781952, 781982, 782012}, // 2141
{782012, 782042, 782071, 782101, 782130, 782160, 782189, 782218, 782247, 782277, 782306, 782336, 782366}, // 2142
{782396, 782425, 782455, 782485, 782514, 782544, 782573, 782602, 782631, 782661, 782690, 782720, 782750}, // 2143
{782750, 782779, 782809, 782839, 782869, 782898, 782927, 782957, 782986, 783016, 783045, 783074, 783104}, // 2144
{783104, 783134, 783163, 783193, 783223, 783252, 783282, 783311, 783341, 783370, 783400, 783429, 783459}, // 2145
{783488, 783517, 783547, 783577, 783606, 783636, 783665, 783695, 783725, 783754, 783784, 783813, 783843}, // 2146
{783843, 783872, 783901, 783931, 783960, 783990, 784020, 784049, 784079, 784109, 784138, 784168, 784197}, // 2147
{784227, 784256, 784286, 784315, 784344, 784374, 784403, 784433, 784463, 784492, 784522, 784552, 784581}, // 2148
{784581, 784611, 784640, 784670, 784699, 784728, 784758, 784787, 784817, 784846, 784876, 784906, 784936}, // 2149
{784936, 784965, 784995, 785024, 785054, 785083, 785112, 785141, 785171, 785200, 785230, 785260, 785290}, // 2150
{785319, 785349, 785379, 785408, 785438, 785467, 785496, 785525, 785555, 785584, 785614, 785644, 785673}, // 2151
{785673, 785703, 785733, 785763, 785792, 785822, 785851, 785880, 785909, 785939, 785968, 785998, 786028}, // 2152
{786028, 786057, 786087, 786117, 786146, 786176, 786205, 786235, 786264, 786294, 786323, 786352, 786382}, // 2153
{786411, 786441, 786471, 786500, 786530, 786560, 786589, 786619, 786648, 786678, 786707, 786736, 786766}, // 2154
{786766, 786795, 786825, 786854, 786884, 786914, 786943, 786973, 787003, 787032, 787062, 787091, 787121}, // 2155
{787121, 787150, 787179, 787209, 787238, 787268, 787297, 787327, 787357, 787386, 787416, 787446, 787475}, // 2156
{787505, 787534, 787563, 787593, 787622, 787652, 787681, 787711, 787740, 787770, 787800, 787830, 787859}, // 2157
{787859, 787889, 787918, 787948, 787977, 788006, 788035, 788065, 788094, 788124, 788154, 788184, 788213}, // 2158
{788243, 788273, 788302, 788332, 788361, 788390, 788419, 788449, 788478, 788508, 788538, 788567, 788597}, // 2159
{788597, 788627, 788657, 788686, 788716, 788745, 788774, 788803, 788833, 788862, 788892, 788921, 788951}, // 2160
{788951, 788981, 789011, 789040, 789070, 789099, 789129, 789158, 789187, 789217, 789246, 789276, 789305}, // 2161
{789335, 789365, 789394, 789424, 789454, 789483, 789513, 789542, 789572, 789601, 789630, 789660, 789689}, // 2162
{789689, 789719, 789749, 789778, 789808, 789837, 789867, 789897, 789926, 789956, 789985, 790014, 790044}, // 2163
{790044, 790073, 790103, 790132, 790162, 790192, 790221, 790251, 790280, 790310, 790340, 790369, 790399}, // 2164
{790428, 790457, 790487, 790516, 790546, 790575, 790605, 790634, 790664, 790694, 790723, 790753, 790783}, // 2165
{790783, 790812, 790841, 790871, 790900, 790930, 790959, 790989, 791018, 791048, 791078, 791107, 791137}, // 2166
{791167, 791196, 791226, 791255, 791284, 791313, 791343, 791372, 791402, 791432, 791461, 791491, 791521}, // 2167
{791521, 791551, 791580, 791610, 791639, 791668, 791697, 791727, 791756, 791786, 791815, 791845, 791875}, // 2168
{791875, 791905, 791934, 791964, 791993, 792023, 792052, 792081, 792111, 792140, 792170, 792199, 792229}, // 2169
{792259, 792289, 792318, 792348, 792377, 792407, 792436, 792465, 792495, 792524, 792554, 792583, 792613}, // 2170
{792613, 792643, 792672, 792702, 792732, 792761, 792791, 792820, 792849, 792879, 792908, 792938, 792967}, // 2171
{792967, 792997, 793026, 793056, 793086, 793115, 793145, 793174, 793204, 793233, 793263, 793292, 793322}, // 2172
{793351, 793381, 793410, 793440, 793469, 793499, 793529, 793558, 793588, 793617, 793647, 793676, 793706}, // 2173
{793706, 793735, 793765, 793794, 793824, 793853, 793883, 793912, 793942, 793972, 794001, 794031, 794061}, // 2174
{794061, 794090, 794119, 794149, 794178, 794207, 794237, 794266, 794296, 794326, 794355, 794385, 794415}, // 2175
{794445, 794474, 794504, 794533, 794562, 794591, 794621, 794650, 794680, 794709, 794739, 794769, 794799}, // 2176
{794799, 794828, 794858, 794888, 794917, 794946, 794975, 795005, 795034, 795064, 795093, 795123, 795153}, // 2177
{795183, 795212, 795242, 795271, 795301, 795330, 795359, 795389, 795418, 795448, 795477, 795507, 795537}, // 2178
{795537, 795566, 795596, 795626, 795655, 795685, 795714, 795743, 795773, 795802, 795832, 795861, 795891}, // 2179
{795891, 795920, 795950, 795980, 796009, 796039, 796069, 796098, 796127, 796157, 796186, 796216, 796245}, // 2180
{796275, 796304, 796334, 796363, 796393, 796423, 796452, 796482, 796511, 796541, 796570, 796600, 796629}, // 2181
{796629, 796659, 796688, 796718, 796747, 796777, 796806, 796836, 796866, 796895, 796925, 796954, 796984}, // 2182
{796984, 797013, 797043, 797072, 797102, 797131, 797160, 797190, 797220, 797249, 797279, 797309, 797338}, // 2183
{797368, 797397, 797427, 797456, 797485, 797515, 797544, 797574, 797603, 797633, 797663, 797693, 797722}, // 2184
{797722, 797752, 797781, 797811, 797840, 797869, 797899, 797928, 797958, 797987, 798017, 798047, 798077}, // 2185
{798077, 798106, 798136, 798165, 798195, 798224, 798253, 798283, 798312, 798342, 798371, 798401, 798431}, // 2186
{798460, 798490, 798520, 798549, 798579, 798608, 798637, 798667, 798696, 798726, 798755, 798785, 798814}, // 2187
{798814, 798844, 798874, 798904, 798933, 798963, 798992, 799021, 799051, 799080, 799110, 799139, 799169}, // 2188
{799198, 799228, 799258, 799287, 799317, 799346, 799376, 799405, 799435, 799464, 799494, 799523, 799553}, // 2189
{799553, 799582, 799612, 799641, 799671, 799701, 799730, 799760, 799789, 799819, 799848, 799878, 799907}, // 2190
{799907, 799937, 799966, 799996, 800025, 800055, 800084, 800114, 800144, 800173, 800203, 800232, 800262}, // 2191
{800291, 800321, 800350, 800380, 800409, 800438, 800468, 800498, 800527, 800557, 800587, 800616, 800646}, // 2192
{800646, 800675, 800705, 800734, 800763, 800793, 800822, 800852, 800881, 800911, 800941, 800971, 801000}, // 2193
{801000, 801030, 801059, 801089, 801118, 801147, 801177, 801206, 801236, 801265, 801295, 801324, 801354}, // 2194
{801384, 801414, 801443, 801473, 801502, 801531, 801561, 801590, 801619, 801649, 801679, 801708, 801738}, // 2195
{801738, 801768, 801798, 801827, 801857, 801886, 801915, 801945, 801974, 802003, 802033, 802062, 802092}, // 2196
{802122, 802152, 802181, 802211, 802241, 802270, 802299, 802329, 802358, 802388, 802417, 802446, 802476}, // 2197
{802476, 802506, 802535, 802565, 802595, 802624, 802654, 802683, 802713, 802742, 802772, 802801, 802831}, // 2198
{802831, 802860, 802890, 802919, 802949, 802978, 803008, 803038, 803067, 803097, 803126, 803156, 803185}, // 2199
{803215, 803244, 803273, 803303, 803332, 803362, 803392, 803421, 803451, 803481, 803510, 803540, 803569}, // 2200
{803569, 803599, 803628, 803657, 803687, 803716, 803746, 803775, 803805, 803835, 803865, 803894, 803924}, // 2201
{803924, 803953, 803983, 804012, 804041, 804071, 804100, 804130, 804159, 804189, 804219, 804248, 804278}, // 2202
{804308, 804337, 804367, 804396, 804425, 804455, 804484, 804513, 804543, 804573, 804602, 804632, 804662}, // 2203
{804662, 804692, 804721, 804751, 804780, 804809, 804839, 804868, 804897, 804927, 804956, 804986, 805016}, // 2204
{805046, 805075, 805105, 805135, 805164, 805193, 805223, 805252, 805281, 805311, 805340, 805370, 805400}, // 2205
{805400, 805429, 805459, 805489, 805518, 805548, 805577, 805607, 805636, 805666, 805695, 805724, 805754}, // 2206
{805754, 805784, 805813, 805843, 805873, 805902, 805932, 805961, 805991, 806020, 806050, 806079, 806108}, // 2207
{806138, 806167, 806197, 806227, 806256, 806286, 806315, 806345, 806375, 806404, 806434, 806463, 806493}, // 2208
{806493, 806522, 806551, 806581, 806610, 806640, 806669, 806699, 806729, 806758, 806788, 806818, 806847}, // 2209
{806847, 806877, 806906, 806935, 806965, 806994, 807024, 807053, 807083, 807113, 807142, 807172, 807202}, // 2210
{807231, 807261, 807290, 807319, 807349, 807378, 807407, 807437, 807467, 807496, 807526, 807556, 807586}, // 2211
{807586, 807615, 807645, 807674, 807703, 807733, 807762, 807791, 807821, 807850, 807880, 807910, 807940}, // 2212
{807940, 807969, 807999, 808029, 808058, 808087, 808117, 808146, 808175, 808205, 808234, 808264, 808294}, // 2213
{808323, 808353, 808383, 808413, 808442, 808471, 808501, 808530, 808559, 808589, 808618, 808648, 808677}, // 2214
{808677, 808707, 808737, 808767, 808796, 808826, 808855, 808885, 808914, 808943, 808973, 809002, 809032}, // 2215
{809061, 809091, 809121, 809150, 809180, 809210, 809239, 809269, 809298, 809328, 809357, 809386, 809416}, // 2216
{809416, 809445, 809475, 809504, 809534, 809564, 809593, 809623, 809653, 809682, 809712, 809741, 809771}, // 2217
{809771, 809800, 809829, 809859, 809888, 809918, 809947, 809977, 810007, 810036, 810066, 810096, 810125}, // 2218
{810155, 810184, 810213, 810243, 810272, 810302, 810331, 810361, 810390, 810420, 810450, 810480, 810509}, // 2219
{810509, 810539, 810568, 810597, 810627, 810656, 810685, 810715, 810744, 810774, 810804, 810834, 810863}, // 2220
{810863, 810893, 810923, 810952, 810981, 811011, 811040, 811069, 811099, 811128, 811158, 811188, 811217}, // 2221
{811247, 811277, 811307, 811336, 811365, 811395, 811424, 811453, 811483, 811512, 811542, 811571, 811601}, // 2222
{811601, 811631, 811661, 811690, 811720, 811749, 811779, 811808, 811837, 811867, 811896, 811926, 811955}, // 2223
{811985, 812015, 812044, 812074, 812104, 812133, 812163, 812192, 812221, 812251, 812280, 812310, 812339}, // 2224
{812339, 812369, 812398, 812428, 812458, 812487, 812517, 812547, 812576, 812606, 812635, 812664, 812694}, // 2225
{812694, 812723, 812753, 812782, 812812, 812841, 812871, 812901, 812930, 812960, 812990, 813019, 813049}, // 2226
{813078, 813107, 813137, 813166, 813196, 813225, 813255, 813284, 813314, 813344, 813373, 813403, 813433}, // 2227
{813433, 813462, 813491, 813521, 813550, 813579, 813609, 813638, 813668, 813698, 813728, 813757, 813787}, // 2228
{813787, 813817, 813846, 813875, 813905, 813934, 813963, 813993, 814022, 814052, 814082, 814111, 814141}, // 2229
{814171, 814201, 814230, 814259, 814289, 814318, 814347, 814377, 814406, 814436, 814465, 814495, 814525}, // 2230
{814525, 814555, 814584, 814614, 814643, 814673, 814702, 814731, 814761, 814790, 814820, 814849, 814879}, // 2231
{814879, 814909, 814939, 814968, 814998, 815027, 815057, 815086, 815115, 815145, 815174, 815204, 815233}, // 2232
{815263, 815293, 815322, 815352, 815382, 815411, 815441, 815470, 815499, 815529, 815558, 815588, 815617}, // 2233
{815617, 815647, 815676, 815706, 815736, 815765, 815795, 815824, 815854, 815883, 815913, 815942, 815972}, // 2234
{816001, 816031, 816060, 816090, 816119, 816149, 816179, 816208, 816238, 816267, 816297, 816326, 816356}, // 2235
{816356, 816385, 816415, 816444, 816474, 816503, 816533, 816562, 816592, 816622, 816651, 816681, 816711}, // 2236
{816711, 816740, 816769, 816799, 816828, 816857, 816887, 816916, 816946, 816976, 817005, 817035, 817065}, // 2237
{817095, 817124, 817153, 817183, 817212, 817241, 817271, 817300, 817330, 817359, 817389, 817419, 817449}, // 2238
{817449, 817478, 817508, 817537, 817567, 817596, 817625, 817655, 817684, 817714, 817743, 817773, 817803}, // 2239
{817803, 817833, 817862, 817892, 817921, 817951, 817980, 818009, 818039, 818068, 818098, 818127, 818157}, // 2240
{818187, 818216, 818246, 818276, 818305, 818335, 818364, 818393, 818423, 818452, 818482, 818511, 818541}, // 2241
{818541, 818570, 818600, 818630, 818659, 818689, 818719, 818748, 818777, 818807, 818836, 818866, 818895}, // 2242
{818925, 818954, 818984, 819013, 819043, 819073, 819102, 819132, 819161, 819191, 819220, 819250, 819279}, // 2243
{819279, 819309, 819338, 819368, 819397, 819427, 819456, 819486, 819516, 819545, 819575, 819604, 819634}, // 2244
{819634, 819663, 819693, 819722, 819751, 819781, 819810, 819840, 819870, 819899, 819929, 819959, 819988}, // 2245
{820018, 820047, 820077, 820106, 820135, 820165, 820194, 820224, 820253, 820283, 820313, 820343, 820372}, // 2246
{820372, 820402, 820431, 820461, 820490, 820519, 820549, 820578, 820608, 820637, 820667, 820697, 820727}, // 2247
{820727, 820756, 820786, 820815, 820845, 820874, 820903, 820933, 820962, 820991, 821021, 821051, 821080}, // 2248
{821110, 821140, 821170, 821199, 821229, 821258, 821287, 821317, 821346, 821375, 821405, 821435, 821464}, // 2249
{821464, 821494, 821524, 821554, 821583, 821613, 821642, 821671, 821701, 821730, 821760, 821789, 821819}, // 2250
{821819, 821848, 821878, 821908, 821937, 821967, 821996, 822026, 822055, 822085, 822114, 822144, 822173}, // 2251
{822203, 822232, 822262, 822291, 822321, 822351, 822380, 822410, 822439, 822469, 822498, 822528, 822557}, // 2252
{822557, 822587, 822616, 822646, 822675, 822705, 822734, 822764, 822793, 822823, 822853, 822882, 822912}, // 2253
{822941, 822971, 823000, 823029, 823059, 823088, 823118, 823147, 823177, 823207, 823237, 823266, 823296}, // 2254
{823296, 823325, 823355, 823384, 823413, 823443, 823472, 823502, 823531, 823561, 823591, 823621, 823650}, // 2255
{823650, 823680, 823709, 823739, 823768, 823797, 823827, 823856, 823885, 823915, 823945, 823974, 824004}, // 2256
{824034, 824064, 824093, 824123, 824152, 824181, 824211, 824240, 824269, 824299, 824329, 824358, 824388}, // 2257
{824388, 824418, 824448, 824477, 824507, 824536, 824565, 824595, 824624, 824653, 824683, 824712, 824742}, // 2258
{824742, 824772, 824802, 824831, 824861, 824891, 824920, 824949, 824979, 825008, 825037, 825067, 825096}, // 2259
{825126, 825156, 825185, 825215, 825245, 825274, 825304, 825333, 825363, 825392, 825422, 825451, 825480}, // 2260
{825480, 825510, 825540, 825569, 825599, 825628, 825658, 825688, 825717, 825747, 825776, 825806, 825835}, // 2261
{825835, 825864, 825893, 825923, 825952, 825982, 826012, 826041, 826071, 826101, 826130, 826160, 826189}, // 2262
{826218, 826248, 826277, 826306, 826336, 826365, 826395, 826424, 826454, 826484, 826513, 826543, 826573}, // 2263
{826573, 826602, 826632, 826661, 826690, 826720, 826749, 826779, 826808, 826838, 826867, 826897, 826927}, // 2264
{826957, 826986, 827016, 827045, 827074, 827104, 827133, 827162, 827192, 827222, 827251, 827281, 827311}, // 2265
{827311, 827341, 827370, 827400, 827429, 827458, 827488, 827517, 827546, 827576, 827605, 827635, 827665}, // 2266
{827665, 827695, 827724, 827754, 827784, 827813, 827842, 827872, 827901, 827930, 827960, 827989, 828019}, // 2267
{828049, 828078, 828108, 828138, 828167, 828197, 828226, 828256, 828285, 828314, 828344, 828373, 828403}, // 2268
{828403, 828433, 828462, 828492, 828521, 828551, 828581, 828610, 828640, 828669, 828699, 828728, 828757}, // 2269
{828757, 828787, 828816, 828846, 828876, 828905, 828935, 828964, 828994, 829024, 829053, 829083, 829112}, // 2270
{829142, 829171, 829200, 829230, 829259, 829289, 829318, 829348, 829378, 829407, 829437, 829467, 829496}, // 2271
{829496, 829526, 829555, 829584, 829614, 829643, 829673, 829702, 829732, 829762, 829791, 829821, 829851}, // 2272
{829880, 829910, 829939, 829968, 829998, 830027, 830056, 830086, 830116, 830145, 830175, 830205, 830235}, // 2273
{830235, 830264, 830294, 830323, 830352, 830382, 830411, 830440, 830470, 830499, 830529, 830559, 830589}, // 2274
{830589, 830618, 830648, 830678, 830707, 830736, 830766, 830795, 830824, 830854, 830883, 830913, 830943}, // 2275
{830972, 831002, 831032, 831062, 831091, 831120, 831150, 831179, 831208, 831238, 831267, 831297, 831326}, // 2276
{831326, 831356, 831386, 831416, 831445, 831475, 831504, 831534, 831563, 831592, 831622, 831651, 831681}, // 2277
{831681, 831710, 831740, 831770, 831799, 831829, 831859, 831888, 831918, 831947, 831977, 832006, 832035}, // 2278
{832065, 832094, 832124, 832153, 832183, 832213, 832242, 832272, 832301, 832331, 832361, 832390, 832420}, // 2279
{832420, 832449, 832478, 832508, 832537, 832567, 832596, 832626, 832656, 832685, 832715, 832745, 832774}, // 2280
{832774, 832804, 832833, 832862, 832892, 832921, 832951, 832980, 833010, 833039, 833069, 833099, 833129}, // 2281
{833158, 833188, 833217, 833246, 833276, 833305, 833334, 833364, 833393, 833423, 833453, 833483, 833512}, // 2282
{833512, 833542, 833572, 833601, 833630, 833660, 833689, 833718, 833748, 833777, 833807, 833837, 833866}, // 2283
{833896, 833926, 833956, 833985, 834014, 834044, 834073, 834102, 834132, 834161, 834191, 834220, 834250}, // 2284
{834250, 834280, 834310, 834339, 834369, 834398, 834428, 834457, 834486, 834516, 834545, 834575, 834604}, // 2285
{834604, 834634, 834664, 834693, 834723, 834753, 834782, 834812, 834841, 834870, 834900, 834929, 834959}, // 2286
{834988, 835018, 835047, 835077, 835107, 835136, 835166, 835196, 835225, 835254, 835284, 835313, 835343}, // 2287
{835343, 835372, 835402, 835431, 835461, 835490, 835520, 835550, 835579, 835609, 835638, 835668, 835697}, // 2288
{835697, 835727, 835756, 835786, 835815, 835845, 835874, 835904, 835933, 835963, 835993, 836022, 836052}, // 2289
{836082, 836111, 836140, 836170, 836199, 836228, 836258, 836287, 836317, 836347, 836377, 836406, 836436}, // 2290
{836436, 836466, 836495, 836524, 836554, 836583, 836612, 836642, 836671, 836701, 836731, 836760, 836790}, // 2291
{836820, 836850, 836879, 836908, 836938, 836967, 836996, 837026, 837055, 837085, 837114, 837144, 837174}, // 2292
{837174, 837204, 837233, 837263, 837292, 837322, 837351, 837380, 837410, 837439, 837469, 837498, 837528}, // 2293
{837528, 837558, 837587, 837617, 837647, 837676, 837706, 837735, 837764, 837794, 837823, 837853, 837882}, // 2294
{837912, 837941, 837971, 838001, 838031, 838060, 838090, 838119, 838148, 838178, 838207, 838237, 838266}, // 2295
{838266, 838296, 838325, 838355, 838385, 838414, 838444, 838473, 838503, 838532, 838562, 838591, 838621}, // 2296
{838621, 838650, 838680, 838709, 838739, 838768, 838798, 838828, 838857, 838887, 838916, 838946, 838975}, // 2297
{839005, 839034, 839064, 839093, 839122, 839152, 839182, 839211, 839241, 839271, 839300, 839330, 839359}, // 2298
{839359, 839389, 839418, 839448, 839477, 839506, 839536, 839565, 839595, 839625, 839654, 839684, 839714}, // 2299
}
// GetAllDays 获取距离公元原点的日数, 这里是农历来的年月日
func (m *TLunarDate) GetAllDays() int {
// 目前只能计算1800年到2300年的天数, 精度不够高
if m.nYear < 1800 || m.nYear >= 2300 {
return 0
}
if m.nMonth < 1 || m.nMonth > 13 {
return 0
}
return allDayList[m.nYear-1800][m.nMonth-1] + m.nDay
}
func (m *TLunarDate) String() string {
strResult := fmt.Sprintf("农历: %d年", m.nYear)
if m.nConventionalMonth == m.nMonth-1 {
strResult += "闰"
}
switch m.nConventionalMonth {
case 1:
strResult += "一月"
case 2:
strResult += "二月"
case 3:
strResult += "三月"
case 4:
strResult += "四月"
case 5:
strResult += "五月"
case 6:
strResult += "六月"
case 7:
strResult += "七月"
case 8:
strResult += "八月"
case 9:
strResult += "九月"
case 10:
strResult += "十月"
case 11:
strResult += "冬月"
case 12:
strResult += "腊月"
}
switch m.nDay {
case 1:
strResult += "初一"
case 2:
strResult += "初二"
case 3:
strResult += "初三"
case 4:
strResult += "初四"
case 5:
strResult += "初五"
case 6:
strResult += "初六"
case 7:
strResult += "初七"
case 8:
strResult += "初八"
case 9:
strResult += "初九"
case 10:
strResult += "初十"
case 11:
strResult += "十一"
case 12:
strResult += "十二"
case 13:
strResult += "十三"
case 14:
strResult += "十四"
case 15:
strResult += "十五"
case 16:
strResult += "十六"
case 17:
strResult += "十七"
case 18:
strResult += "十八"
case 19:
strResult += "十九"
case 20:
strResult += "二十"
case 21:
strResult += "廿一"
case 22:
strResult += "廿二"
case 23: