Commit f9a81c17 authored by Hongzhi's avatar Hongzhi

TBS bg1 for sib1/2

parent 0933c1c7
...@@ -65,7 +65,7 @@ int32_t nr_segmentation(unsigned char *input_buffer, ...@@ -65,7 +65,7 @@ int32_t nr_segmentation(unsigned char *input_buffer,
// Find K+ // Find K+
Bprime_by_C = Bprime/(*C); Bprime_by_C = Bprime/(*C);
if (Bprime <=192) { /*if (Bprime <=192) {
Kb = 6; Kb = 6;
} else if (Bprime <=560) { } else if (Bprime <=560) {
Kb = 8; Kb = 8;
...@@ -73,9 +73,9 @@ int32_t nr_segmentation(unsigned char *input_buffer, ...@@ -73,9 +73,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
Kb = 9; Kb = 9;
} else if (Bprime <=3840) { } else if (Bprime <=3840) {
Kb = 10;; Kb = 10;;
} else { } else {*/
Kb = 22; Kb = 22;
} //}
if ((Bprime_by_C%Kb) > 0) if ((Bprime_by_C%Kb) > 0)
...@@ -83,7 +83,7 @@ if ((Bprime_by_C%Kb) > 0) ...@@ -83,7 +83,7 @@ if ((Bprime_by_C%Kb) > 0)
else else
Z = (Bprime_by_C/Kb); Z = (Bprime_by_C/Kb);
//printf("nr segmetation B %d Bprime %d Bprime_by_C %d z %d \n", B, Bprime, Bprime_by_C, Z); printf("nr segmetation B %d Bprime %d Bprime_by_C %d z %d \n", B, Bprime, Bprime_by_C, Z);
if (Z <= 2) { if (Z <= 2) {
*Kplus = 2; *Kplus = 2;
...@@ -141,7 +141,7 @@ else ...@@ -141,7 +141,7 @@ else
*F = ((*C)*(*Kplus) - (Bprime)); *F = ((*C)*(*Kplus) - (Bprime));
//printf("final nr seg output Z %d Kplus %d F %d \n", *Zout, *Kplus, *F); printf("final nr seg output Z %d Kplus %d F %d \n", *Zout, *Kplus, *F);
#ifdef DEBUG_SEGMENTATION #ifdef DEBUG_SEGMENTATION
printf("C %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d\n",*C,*Kplus,*Kminus,Bprime>>3,Bprime,*F); printf("C %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d\n",*C,*Kplus,*Kminus,Bprime>>3,Bprime,*F);
#endif #endif
......
...@@ -352,7 +352,6 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue, ...@@ -352,7 +352,6 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
} }
kb = harq_process->Kplus/harq_process->Z; kb = harq_process->Kplus/harq_process->Z;
// p_decParams->Z = 128;
if ( kb==22){ if ( kb==22){
p_decParams->BG = 1; p_decParams->BG = 1;
p_decParams->R = 13; p_decParams->R = 13;
...@@ -364,7 +363,7 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue, ...@@ -364,7 +363,7 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
kc = 52; kc = 52;
} }
p_decParams->numMaxIter = 5; p_decParams->numMaxIter = 10;
Kr = p_decParams->Z*kb; Kr = p_decParams->Z*kb;
p_decParams->outMode= 0; p_decParams->outMode= 0;
...@@ -627,16 +626,16 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue, ...@@ -627,16 +626,16 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
llrProcBuf, llrProcBuf,
p_procTime); p_procTime);
ret = no_iteration_ldpc; // ret = no_iteration_ldpc;
nb_total_decod++; nb_total_decod++;
if (no_iteration_ldpc > 5){ if (no_iteration_ldpc > 5){
nb_error_decod++; nb_error_decod++;
} }
//if (!nb_total_decod%10000){ if (!nb_total_decod%10000){
printf("Error number of iteration LPDC %d %ld/%ld \n", no_iteration_ldpc, nb_error_decod,nb_total_decod);fflush(stdout); printf("Error number of iteration LPDC %d %ld/%ld \n", no_iteration_ldpc, nb_error_decod,nb_total_decod);fflush(stdout);
//} }
//else //else
//printf("OK number of iteration LPDC %d\n", no_iteration_ldpc); //printf("OK number of iteration LPDC %d\n", no_iteration_ldpc);
...@@ -650,11 +649,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue, ...@@ -650,11 +649,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
#endif #endif
//#ifdef DEBUG_DLSCH_DECODING //#ifdef DEBUG_DLSCH_DECODING
printf("output decoder %d %d %d %d %d \n", harq_process->c[r][0], harq_process->c[r][1], harq_process->c[r][2],harq_process->c[r][3], harq_process->c[r][4]); printf("output decoder %d %d %d %d %d \n", harq_process->c[r][0], harq_process->c[r][1], harq_process->c[r][2],harq_process->c[r][3], harq_process->c[r][4]);
printf("no_iterations_ldpc %d\n",no_iteration_ldpc); printf("no_iterations_ldpc %d\n",no_iteration_ldpc);
write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4); //write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4);
//#endif //#endif
#if UE_TIMING_TRACE #if UE_TIMING_TRACE
...@@ -945,7 +944,7 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue, ...@@ -945,7 +944,7 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue,
uint16_t iind; uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12]; // uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)]; short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0; uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0,Kr_int,kb,kc;
uint8_t crc_type; uint8_t crc_type;
//UE_rxtx_proc_t *proc = &phy_vars_ue->proc; //UE_rxtx_proc_t *proc = &phy_vars_ue->proc;
int32_t no_iteration_ldpc; int32_t no_iteration_ldpc;
...@@ -1116,12 +1115,21 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue, ...@@ -1116,12 +1115,21 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue,
} }
// p_decParams->Z = 128; kb = harq_process->Kplus/harq_process->Z;
p_decParams->BG = 1; if ( kb==22){
p_decParams->R = 89; p_decParams->BG = 1;
p_decParams->numMaxIter = 5; p_decParams->R = 13;
Kr = p_decParams->Z*22; kc = 68;
p_decParams->outMode= 0; }
else{
p_decParams->BG = 2;
p_decParams->R = 13;
kc = 52;
}
p_decParams->numMaxIter = 10;
Kr = p_decParams->Z*kb;
p_decParams->outMode= 0;
/* /*
else { else {
...@@ -1301,6 +1309,12 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment ...@@ -1301,6 +1309,12 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
Kr_bytes = Kr>>3; Kr_bytes = Kr>>3;
//workaround for nr ldpc using lte interleaving
if (dlsch->harq_processes[harq_pid]->C >= 2)
Kr_int = G/(3*dlsch->harq_processes[harq_pid]->C);
else
Kr_int = Kr;
if (Kr_bytes<=64) if (Kr_bytes<=64)
iind = (Kr_bytes-5); iind = (Kr_bytes-5);
else if (Kr_bytes <=128) else if (Kr_bytes <=128)
...@@ -1310,8 +1324,8 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment ...@@ -1310,8 +1324,8 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
else if (Kr_bytes <= 768) else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3); iind = 123 + ((Kr_bytes-256)>>3);
else { else {
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes); //printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
return(dlsch->max_turbo_iterations); //return(dlsch->max_turbo_iterations);
} }
#ifdef DEBUG_DLSCH_DECODING #ifdef DEBUG_DLSCH_DECODING
...@@ -1322,7 +1336,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment ...@@ -1322,7 +1336,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
start_meas(dlsch_rate_unmatching_stats); start_meas(dlsch_rate_unmatching_stats);
#endif #endif
memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short)); memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8), harq_process->RTC[r] = generate_dummy_w(Kr_int,
(uint8_t*) &dummy_w[r][0], (uint8_t*) &dummy_w[r][0],
(r==0) ? harq_process->F : 0); (r==0) ? harq_process->F : 0);
...@@ -1368,6 +1382,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment ...@@ -1368,6 +1382,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
#endif #endif
} }
r_offset += E; r_offset += E;
//printf("main thread r_offset %d\n",r_offset);
/* /*
printf("Subblock deinterleaving, d %p w %p\n", printf("Subblock deinterleaving, d %p w %p\n",
...@@ -1482,7 +1497,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment ...@@ -1482,7 +1497,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
llrProcBuf, llrProcBuf,
p_procTime); p_procTime);
if (no_iteration_ldpc > 2) if (no_iteration_ldpc > 10)
printf("Error number of iteration LPDC %d\n", no_iteration_ldpc); printf("Error number of iteration LPDC %d\n", no_iteration_ldpc);
//else //else
//printf("OK number of iteration LPDC %d\n", no_iteration_ldpc); //printf("OK number of iteration LPDC %d\n", no_iteration_ldpc);
...@@ -1850,7 +1865,7 @@ uint32_t dlsch_decoding_2thread0(void *arg) ...@@ -1850,7 +1865,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
uint16_t iind; uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12]; // uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)]; short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0; uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0,Kr_int;
uint8_t crc_type; uint8_t crc_type;
uint8_t C; uint8_t C;
uint8_t Qm; uint8_t Qm;
...@@ -1986,8 +2001,8 @@ uint32_t dlsch_decoding_2thread0(void *arg) ...@@ -1986,8 +2001,8 @@ uint32_t dlsch_decoding_2thread0(void *arg)
// p_decParams->Z = 128; // p_decParams->Z = 128;
p_decParams->BG = 1; p_decParams->BG = 1;
p_decParams->R = 89; p_decParams->R = 13;
p_decParams->numMaxIter = 5; p_decParams->numMaxIter = 2;
Kr = p_decParams->Z*22; Kr = p_decParams->Z*22;
p_decParams->outMode= 0; p_decParams->outMode= 0;
...@@ -2045,6 +2060,8 @@ uint32_t dlsch_decoding_2thread0(void *arg) ...@@ -2045,6 +2060,8 @@ uint32_t dlsch_decoding_2thread0(void *arg)
r_offset = Nl*Qm * (Gp/C); r_offset = Nl*Qm * (Gp/C);
else else
r_offset = Nl*Qm * ((GpmodC==0?0:1) + (Gp/C)); r_offset = Nl*Qm * ((GpmodC==0?0:1) + (Gp/C));
printf("thread0 r_offset %d\n",r_offset);
//for (r=(harq_process->C/2); r<harq_process->C; r++) { //for (r=(harq_process->C/2); r<harq_process->C; r++) {
r=1; //(harq_process->C/2); r=1; //(harq_process->C/2);
...@@ -2061,6 +2078,12 @@ uint32_t dlsch_decoding_2thread0(void *arg) ...@@ -2061,6 +2078,12 @@ uint32_t dlsch_decoding_2thread0(void *arg)
Kr_bytes = Kr>>3; Kr_bytes = Kr>>3;
//workaround for nr ldpc using lte interleaving
if (dlsch->harq_processes[harq_pid]->C >= 2)
Kr_int = G/(3*dlsch->harq_processes[harq_pid]->C);
else
Kr_int = Kr;
if (Kr_bytes<=64) if (Kr_bytes<=64)
iind = (Kr_bytes-5); iind = (Kr_bytes-5);
else if (Kr_bytes <=128) else if (Kr_bytes <=128)
...@@ -2070,7 +2093,7 @@ uint32_t dlsch_decoding_2thread0(void *arg) ...@@ -2070,7 +2093,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
else if (Kr_bytes <= 768) else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3); iind = 123 + ((Kr_bytes-256)>>3);
else { else {
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes); //printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations); //return(dlsch->max_turbo_iterations);
} }
...@@ -2082,7 +2105,7 @@ uint32_t dlsch_decoding_2thread0(void *arg) ...@@ -2082,7 +2105,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
start_meas(dlsch_rate_unmatching_stats); start_meas(dlsch_rate_unmatching_stats);
#endif #endif
memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short)); memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8), harq_process->RTC[r] = generate_dummy_w(Kr_int,
(uint8_t*) &dummy_w[r][0], (uint8_t*) &dummy_w[r][0],
(r==0) ? harq_process->F : 0); (r==0) ? harq_process->F : 0);
...@@ -2603,8 +2626,8 @@ uint32_t dlsch_decoding_2thread1(void *arg) ...@@ -2603,8 +2626,8 @@ uint32_t dlsch_decoding_2thread1(void *arg)
uint32_t ret,offset; uint32_t ret,offset;
uint16_t iind; uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12]; // uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(6144+64)]; short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0; uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0,Kr_int;
uint8_t crc_type; uint8_t crc_type;
uint8_t C; uint8_t C;
uint8_t Qm; uint8_t Qm;
...@@ -2746,7 +2769,7 @@ uint32_t dlsch_decoding_2thread1(void *arg) ...@@ -2746,7 +2769,7 @@ uint32_t dlsch_decoding_2thread1(void *arg)
// p_decParams->Z = 128; // p_decParams->Z = 128;
p_decParams->BG = 1; p_decParams->BG = 1;
p_decParams->R = 89; p_decParams->R = 89;
p_decParams->numMaxIter = 5; p_decParams->numMaxIter = 2;
Kr = p_decParams->Z*22; Kr = p_decParams->Z*22;
p_decParams->outMode= 0; p_decParams->outMode= 0;
/* /*
...@@ -2824,6 +2847,12 @@ uint32_t dlsch_decoding_2thread1(void *arg) ...@@ -2824,6 +2847,12 @@ uint32_t dlsch_decoding_2thread1(void *arg)
Kr_bytes = Kr>>3; Kr_bytes = Kr>>3;
//workaround for nr ldpc using lte interleaving
if (dlsch->harq_processes[harq_pid]->C >= 2)
Kr_int = G/(3*dlsch->harq_processes[harq_pid]->C);
else
Kr_int = Kr;
if (Kr_bytes<=64) if (Kr_bytes<=64)
iind = (Kr_bytes-5); iind = (Kr_bytes-5);
else if (Kr_bytes <=128) else if (Kr_bytes <=128)
...@@ -2833,7 +2862,7 @@ uint32_t dlsch_decoding_2thread1(void *arg) ...@@ -2833,7 +2862,7 @@ uint32_t dlsch_decoding_2thread1(void *arg)
else if (Kr_bytes <= 768) else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3); iind = 123 + ((Kr_bytes-256)>>3);
else { else {
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes); //printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations); //return(dlsch->max_turbo_iterations);
} }
...@@ -2844,8 +2873,8 @@ uint32_t dlsch_decoding_2thread1(void *arg) ...@@ -2844,8 +2873,8 @@ uint32_t dlsch_decoding_2thread1(void *arg)
#if UE_TIMING_TRACE #if UE_TIMING_TRACE
start_meas(dlsch_rate_unmatching_stats); start_meas(dlsch_rate_unmatching_stats);
#endif #endif
memset(&dummy_w[r][0],0,3*(6144+64)*sizeof(short)); memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8), harq_process->RTC[r] = generate_dummy_w(Kr_int,
(uint8_t*) &dummy_w[r][0], (uint8_t*) &dummy_w[r][0],
(r==0) ? harq_process->F : 0); (r==0) ? harq_process->F : 0);
......
...@@ -18,71 +18,40 @@ ...@@ -18,71 +18,40 @@
* For more information about the OpenAirInterface (OAI) Software Alliance: * For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org * contact@openairinterface.org
*/ */
//#define LTE_TBS
#define TBStable_rowCnt 27 #define TBStable_rowCnt 27
#ifdef LTE_TBS
/** \brief "Transport block size table" /** \brief "Transport block size table"
* (Table 7.1.7.2.1-1 in 3GPP TS 36.213 V8.6.0) * (Table 7.1.7.2.1-1 in 3GPP TS 36.213 V8.6.0)
*/ */
unsigned int TBStable[TBStable_rowCnt][110] = {{16,32,56,88,120,152,176,208,224,256,288,328,344,376,392,424,456,488,504,536,568,600,616,648,680,712,744,776,776,808,840,872,904,936,968,1000,1032,1032,1064,1096,1128,1160,1192,1224,1256,1256,1288,1320,1352,1384,1416,1416,1480,1480,1544,1544,1608,1608,1608,1672,1672,1736,1736,1800,1800,1800,1864,1864,1928,1928,1992,1992,2024,2088,2088,2088,2152,2152,2216,2216,2280,2280,2280,2344,2344,2408,2408,2472,2472,2536,2536,2536,2600,2600,2664,2664,2728,2728,2728,2792,2792,2856,2856,2856,2984,2984,2984,2984,2984,3112},
{24,56,88,144,176,208,224,256,328,344,376,424,456,488,520,568,600,632,680,712,744,776,808,872,904,936,968,1000,1032,1064,1128,1160,1192,1224,1256,1288,1352,1384,1416,1416,1480,1544,1544,1608,1608,1672,1736,1736,1800,1800,1864,1864,1928,1992,1992,2024,2088,2088,2152,2152,2216,2280,2280,2344,2344,2408,2472,2472,2536,2536,2600,2600,2664,2728,2728,2792,2792,2856,2856,2856,2984,2984,2984,3112,3112,3112,3240,3240,3240,3240,3368,3368,3368,3496,3496,3496,3496,3624,3624,3624,3752,3752,3752,3752,3880,3880,3880,4008,4008,4008},
{32,72,144,176,208,256,296,328,376,424,472,520,568,616,648,696,744,776,840,872,936,968,1000,1064,1096,1160,1192,1256,1288,1320,1384,1416,1480,1544,1544,1608,1672,1672,1736,1800,1800,1864,1928,1992,2024,2088,2088,2152,2216,2216,2280,2344,2344,2408,2472,2536,2536,2600,2664,2664,2728,2792,2856,2856,2856,2984,2984,3112,3112,3112,3240,3240,3240,3368,3368,3368,3496,3496,3496,3624,3624,3624,3752,3752,3880,3880,3880,4008,4008,4008,4136,4136,4136,4264,4264,4264,4392,4392,4392,4584,4584,4584,4584,4584,4776,4776,4776,4776,4968,4968},
{40,104,176,208,256,328,392,440,504,568,616,680,744,808,872,904,968,1032,1096,1160,1224,1256,1320,1384,1416,1480,1544,1608,1672,1736,1800,1864,1928,1992,2024,2088,2152,2216,2280,2344,2408,2472,2536,2536,2600,2664,2728,2792,2856,2856,2984,2984,3112,3112,3240,3240,3368,3368,3496,3496,3624,3624,3624,3752,3752,3880,3880,4008,4008,4136,4136,4264,4264,4392,4392,4392,4584,4584,4584,4776,4776,4776,4776,4968,4968,4968,5160,5160,5160,5352,5352,5352,5352,5544,5544,5544,5736,5736,5736,5736,5992,5992,5992,5992,6200,6200,6200,6200,6456,6456},
{56,120,208,256,328,408,488,552,632,696,776,840,904,1000,1064,1128,1192,1288,1352,1416,1480,1544,1608,1736,1800,1864,1928,1992,2088,2152,2216,2280,2344,2408,2472,2600,2664,2728,2792,2856,2984,2984,3112,3112,3240,3240,3368,3496,3496,3624,3624,3752,3752,3880,4008,4008,4136,4136,4264,4264,4392,4392,4584,4584,4584,4776,4776,4968,4968,4968,5160,5160,5160,5352,5352,5544,5544,5544,5736,5736,5736,5992,5992,5992,5992,6200,6200,6200,6456,6456,6456,6456,6712,6712,6712,6968,6968,6968,6968,7224,7224,7224,7480,7480,7480,7480,7736,7736,7736,7992},
{72,144,224,328,424,504,600,680,776,872,968,1032,1128,1224,1320,1384,1480,1544,1672,1736,1864,1928,2024,2088,2216,2280,2344,2472,2536,2664,2728,2792,2856,2984,3112,3112,3240,3368,3496,3496,3624,3752,3752,3880,4008,4008,4136,4264,4392,4392,4584,4584,4776,4776,4776,4968,4968,5160,5160,5352,5352,5544,5544,5736,5736,5736,5992,5992,5992,6200,6200,6200,6456,6456,6712,6712,6712,6968,6968,6968,7224,7224,7224,7480,7480,7480,7736,7736,7736,7992,7992,7992,8248,8248,8248,8504,8504,8760,8760,8760,8760,9144,9144,9144,9144,9528,9528,9528,9528,9528},
{328,176,256,392,504,600,712,808,936,1032,1128,1224,1352,1480,1544,1672,1736,1864,1992,2088,2216,2280,2408,2472,2600,2728,2792,2984,2984,3112,3240,3368,3496,3496,3624,3752,3880,4008,4136,4136,4264,4392,4584,4584,4776,4776,4968,4968,5160,5160,5352,5352,5544,5736,5736,5992,5992,5992,6200,6200,6456,6456,6456,6712,6712,6968,6968,6968,7224,7224,7480,7480,7736,7736,7736,7992,7992,8248,8248,8248,8504,8504,8760,8760,8760,9144,9144,9144,9144,9528,9528,9528,9528,9912,9912,9912,10296,10296,10296,10296,10680,10680,10680,10680,11064,11064,11064,11448,11448,11448},
{104,224,328,472,584,712,840,968,1096,1224,1320,1480,1608,1672,1800,1928,2088,2216,2344,2472,2536,2664,2792,2984,3112,3240,3368,3368,3496,3624,3752,3880,4008,4136,4264,4392,4584,4584,4776,4968,4968,5160,5352,5352,5544,5736,5736,5992,5992,6200,6200,6456,6456,6712,6712,6712,6968,6968,7224,7224,7480,7480,7736,7736,7992,7992,8248,8248,8504,8504,8760,8760,8760,9144,9144,9144,9528,9528,9528,9912,9912,9912,10296,10296,10296,10680,10680,10680,11064,11064,11064,11448,11448,11448,11448,11832,11832,11832,12216,12216,12216,12576,12576,12576,12960,12960,12960,12960,13536,13536},
{120,256,392,536,680,808,968,1096,1256,1384,1544,1672,1800,1928,2088,2216,2344,2536,2664,2792,2984,3112,3240,3368,3496,3624,3752,3880,4008,4264,4392,4584,4584,4776,4968,4968,5160,5352,5544,5544,5736,5992,5992,6200,6200,6456,6456,6712,6968,6968,7224,7224,7480,7480,7736,7736,7992,7992,8248,8504,8504,8760,8760,9144,9144,9144,9528,9528,9528,9912,9912,9912,10296,10296,10680,10680,10680,11064,11064,11064,11448,11448,11448,11832,11832,12216,12216,12216,12576,12576,12576,12960,12960,12960,13536,13536,13536,13536,14112,14112,14112,14112,14688,14688,14688,14688,15264,15264,15264,15264},
{136,296,456,616,776,936,1096,1256,1416,1544,1736,1864,2024,2216,2344,2536,2664,2856,2984,3112,3368,3496,3624,3752,4008,4136,4264,4392,4584,4776,4968,5160,5160,5352,5544,5736,5736,5992,6200,6200,6456,6712,6712,6968,6968,7224,7480,7480,7736,7992,7992,8248,8248,8504,8760,8760,9144,9144,9144,9528,9528,9912,9912,10296,10296,10296,10680,10680,11064,11064,11064,11448,11448,11832,11832,11832,12216,12216,12576,12576,12960,12960,12960,13536,13536,13536,13536,14112,14112,14112,14112,14688,14688,14688,15264,15264,15264,15264,15840,15840,15840,16416,16416,16416,16416,16992,16992,16992,16992,17568},
{144,328,504,680,872,1032,1224,1384,1544,1736,1928,2088,2280,2472,2664,2792,2984,3112,3368,3496,3752,3880,4008,4264,4392,4584,4776,4968,5160,5352,5544,5736,5736,5992,6200,6200,6456,6712,6712,6968,7224,7480,7480,7736,7992,7992,8248,8504,8504,8760,9144,9144,9144,9528,9528,9912,9912,10296,10296,10680,10680,11064,11064,11448,11448,11448,11832,11832,12216,12216,12576,12576,12960,12960,12960,13536,13536,13536,14112,14112,14112,14688,14688,14688,14688,15264,15264,15264,15840,15840,15840,16416,16416,16416,16992,16992,16992,16992,17568,17568,17568,18336,18336,18336,18336,18336,19080,19080,19080,19080},
{176,376,584,776,1000,1192,1384,1608,1800,2024,2216,2408,2600,2792,2984,3240,3496,3624,3880,4008,4264,4392,4584,4776,4968,5352,5544,5736,5992,5992,6200,6456,6712,6968,6968,7224,7480,7736,7736,7992,8248,8504,8760,8760,9144,9144,9528,9528,9912,9912,10296,10680,10680,11064,11064,11448,11448,11832,11832,12216,12216,12576,12576,12960,12960,13536,13536,13536,14112,14112,14112,14688,14688,14688,15264,15264,15840,15840,15840,16416,16416,16416,16992,16992,16992,17568,17568,17568,18336,18336,18336,18336,19080,19080,19080,19080,19848,19848,19848,19848,20616,20616,20616,21384,21384,21384,21384,22152,22152,22152},
{208,440,680,904,1128,1352,1608,1800,2024,2280,2472,2728,2984,3240,3368,3624,3880,4136,4392,4584,4776,4968,5352,5544,5736,5992,6200,6456,6712,6712,6968,7224,7480,7736,7992,8248,8504,8760,8760,9144,9528,9528,9912,9912,10296,10680,10680,11064,11064,11448,11832,11832,12216,12216,12576,12576,12960,12960,13536,13536,14112,14112,14112,14688,14688,15264,15264,15264,15840,15840,16416,16416,16416,16992,16992,17568,17568,17568,18336,18336,18336,19080,19080,19080,19080,19848,19848,19848,20616,20616,20616,21384,21384,21384,21384,22152,22152,22152,22920,22920,22920,23688,23688,23688,23688,24496,24496,24496,24496,25456},
{224,488,744,1000,1256,1544,1800,2024,2280,2536,2856,3112,3368,3624,3880,4136,4392,4584,4968,5160,5352,5736,5992,6200,6456,6712,6968,7224,7480,7736,7992,8248,8504,8760,9144,9144,9528,9912,9912,10296,10680,10680,11064,11448,11448,11832,12216,12216,12576,12960,12960,13536,13536,14112,14112,14688,14688,14688,15264,15264,15840,15840,16416,16416,16992,16992,16992,17568,17568,18336,18336,18336,19080,19080,19080,19848,19848,19848,20616,20616,20616,21384,21384,21384,22152,22152,22152,22920,22920,22920,23688,23688,23688,24496,24496,24496,25456,25456,25456,25456,26416,26416,26416,26416,27376,27376,27376,27376,28336,28336},
{256,552,840,1128,1416,1736,1992,2280,2600,2856,3112,3496,3752,4008,4264,4584,4968,5160,5544,5736,5992,6200,6456,6968,7224,7480,7736,7992,8248,8504,8760,9144,9528,9912,9912,10296,10680,11064,11064,11448,11832,12216,12216,12576,12960,12960,13536,13536,14112,14112,14688,14688,15264,15264,15840,15840,16416,16416,16992,16992,17568,17568,18336,18336,18336,19080,19080,19848,19848,19848,20616,20616,20616,21384,21384,22152,22152,22152,22920,22920,22920,23688,23688,24496,24496,24496,25456,25456,25456,25456,26416,26416,26416,27376,27376,27376,28336,28336,28336,28336,29296,29296,29296,29296,30576,30576,30576,30576,31704,31704},
{280,600,904,1224,1544,1800,2152,2472,2728,3112,3368,3624,4008,4264,4584,4968,5160,5544,5736,6200,6456,6712,6968,7224,7736,7992,8248,8504,8760,9144,9528,9912,10296,10296,10680,11064,11448,11832,11832,12216,12576,12960,12960,13536,13536,14112,14688,14688,15264,15264,15840,15840,16416,16416,16992,16992,17568,17568,18336,18336,18336,19080,19080,19848,19848,20616,20616,20616,21384,21384,22152,22152,22152,22920,22920,23688,23688,23688,24496,24496,24496,25456,25456,25456,26416,26416,26416,27376,27376,27376,28336,28336,28336,29296,29296,29296,29296,30576,30576,30576,30576,31704,31704,31704,31704,32856,32856,32856,34008,34008},
{328,632,968,1288,1608,1928,2280,2600,2984,3240,3624,3880,4264,4584,4968,5160,5544,5992,6200,6456,6712,7224,7480,7736,7992,8504,8760,9144,9528,9912,9912,10296,10680,11064,11448,11832,12216,12216,12576,12960,13536,13536,14112,14112,14688,14688,15264,15840,15840,16416,16416,16992,16992,17568,17568,18336,18336,19080,19080,19848,19848,19848,20616,20616,21384,21384,22152,22152,22152,22920,22920,23688,23688,24496,24496,24496,25456,25456,25456,26416,26416,26416,27376,27376,27376,28336,28336,28336,29296,29296,29296,30576,30576,30576,30576,31704,31704,31704,31704,32856,32856,32856,34008,34008,34008,34008,35160,35160,35160,35160},
{336,696,1064,1416,1800,2152,2536,2856,3240,3624,4008,4392,4776,5160,5352,5736,6200,6456,6712,7224,7480,7992,8248,8760,9144,9528,9912,10296,10296,10680,11064,11448,11832,12216,12576,12960,13536,13536,14112,14688,14688,15264,15264,15840,16416,16416,16992,17568,17568,18336,18336,19080,19080,19848,19848,20616,20616,20616,21384,21384,22152,22152,22920,22920,23688,23688,24496,24496,24496,25456,25456,26416,26416,26416,27376,27376,27376,28336,28336,29296,29296,29296,30576,30576,30576,30576,31704,31704,31704,32856,32856,32856,34008,34008,34008,35160,35160,35160,35160,36696,36696,36696,36696,37888,37888,37888,39232,39232,39232,39232},
{376,776,1160,1544,1992,2344,2792,3112,3624,4008,4392,4776,5160,5544,5992,6200,6712,7224,7480,7992,8248,8760,9144,9528,9912,10296,10680,11064,11448,11832,12216,12576,12960,13536,14112,14112,14688,15264,15264,15840,16416,16416,16992,17568,17568,18336,18336,19080,19080,19848,19848,20616,21384,21384,22152,22152,22920,22920,23688,23688,24496,24496,24496,25456,25456,26416,26416,27376,27376,27376,28336,28336,29296,29296,29296,30576,30576,30576,31704,31704,31704,32856,32856,32856,34008,34008,34008,35160,35160,35160,36696,36696,36696,37888,37888,37888,37888,39232,39232,39232,40576,40576,40576,40576,42368,42368,42368,42368,43816,43816},
{408,840,1288,1736,2152,2600,2984,3496,3880,4264,4776,5160,5544,5992,6456,6968,7224,7736,8248,8504,9144,9528,9912,10296,10680,11064,11448,12216,12576,12960,13536,13536,14112,14688,15264,15264,15840,16416,16992,16992,17568,18336,18336,19080,19080,19848,20616,20616,21384,21384,22152,22152,22920,22920,23688,24496,24496,25456,25456,25456,26416,26416,27376,27376,28336,28336,29296,29296,29296,30576,30576,30576,31704,31704,32856,32856,32856,34008,34008,34008,35160,35160,35160,36696,36696,36696,37888,37888,37888,39232,39232,39232,40576,40576,40576,40576,42368,42368,42368,43816,43816,43816,43816,45352,45352,45352,46888,46888,46888,46888},
{440,904,1384,1864,2344,2792,3240,3752,4136,4584,5160,5544,5992,6456,6968,7480,7992,8248,8760,9144,9912,10296,10680,11064,11448,12216,12576,12960,13536,14112,14688,14688,15264,15840,16416,16992,16992,17568,18336,18336,19080,19848,19848,20616,20616,21384,22152,22152,22920,22920,23688,24496,24496,25456,25456,26416,26416,27376,27376,28336,28336,29296,29296,29296,30576,30576,31704,31704,31704,32856,32856,34008,34008,34008,35160,35160,35160,36696,36696,36696,37888,37888,39232,39232,39232,40576,40576,40576,42368,42368,42368,42368,43816,43816,43816,45352,45352,45352,46888,46888,46888,46888,48936,48936,48936,48936,48936,51024,51024,51024},
{488,1000,1480,1992,2472,2984,3496,4008,4584,4968,5544,5992,6456,6968,7480,7992,8504,9144,9528,9912,10680,11064,11448,12216,12576,12960,13536,14112,14688,15264,15840,15840,16416,16992,17568,18336,18336,19080,19848,19848,20616,21384,21384,22152,22920,22920,23688,24496,24496,25456,25456,26416,26416,27376,27376,28336,28336,29296,29296,30576,30576,31704,31704,31704,32856,32856,34008,34008,35160,35160,35160,36696,36696,36696,37888,37888,39232,39232,39232,40576,40576,40576,42368,42368,42368,43816,43816,43816,45352,45352,45352,46888,46888,46888,46888,48936,48936,48936,48936,51024,51024,51024,51024,52752,52752,52752,52752,55056,55056,55056},
{520,1064,1608,2152,2664,3240,3752,4264,4776,5352,5992,6456,6968,7480,7992,8504,9144,9528,10296,10680,11448,11832,12576,12960,13536,14112,14688,15264,15840,16416,16992,16992,17568,18336,19080,19080,19848,20616,21384,21384,22152,22920,22920,23688,24496,24496,25456,25456,26416,27376,27376,28336,28336,29296,29296,30576,30576,31704,31704,32856,32856,34008,34008,34008,35160,35160,36696,36696,36696,37888,37888,39232,39232,40576,40576,40576,42368,42368,42368,43816,43816,43816,45352,45352,45352,46888,46888,46888,48936,48936,48936,48936,51024,51024,51024,51024,52752,52752,52752,55056,55056,55056,55056,57336,57336,57336,57336,59256,59256,59256},
{552,1128,1736,2280,2856,3496,4008,4584,5160,5736,6200,6968,7480,7992,8504,9144,9912,10296,11064,11448,12216,12576,12960,13536,14112,14688,15264,15840,16416,16992,17568,18336,19080,19848,19848,20616,21384,22152,22152,22920,23688,24496,24496,25456,25456,26416,27376,27376,28336,28336,29296,29296,30576,30576,31704,31704,32856,32856,34008,34008,35160,35160,36696,36696,37888,37888,37888,39232,39232,40576,40576,40576,42368,42368,43816,43816,43816,45352,45352,45352,46888,46888,46888,48936,48936,48936,51024,51024,51024,51024,52752,52752,52752,55056,55056,55056,55056,57336,57336,57336,57336,59256,59256,59256,59256,61664,61664,61664,61664,63776},
{584,1192,1800,2408,2984,3624,4264,4968,5544,5992,6712,7224,7992,8504,9144,9912,10296,11064,11448,12216,12960,13536,14112,14688,15264,15840,16416,16992,17568,18336,19080,19848,19848,20616,21384,22152,22920,22920,23688,24496,25456,25456,26416,26416,27376,28336,28336,29296,29296,30576,31704,31704,32856,32856,34008,34008,35160,35160,36696,36696,36696,37888,37888,39232,39232,40576,40576,42368,42368,42368,43816,43816,45352,45352,45352,46888,46888,46888,48936,48936,48936,51024,51024,51024,52752,52752,52752,52752,55056,55056,55056,57336,57336,57336,57336,59256,59256,59256,61664,61664,61664,61664,63776,63776,63776,63776,66592,66592,66592,66592},
{616,1256,1864,2536,3112,3752,4392,5160,5736,6200,6968,7480,8248,8760,9528,10296,10680,11448,12216,12576,13536,14112,14688,15264,15840,16416,16992,17568,18336,19080,19848,20616,20616,21384,22152,22920,23688,24496,24496,25456,26416,26416,27376,28336,28336,29296,29296,30576,31704,31704,32856,32856,34008,34008,35160,35160,36696,36696,37888,37888,39232,39232,40576,40576,40576,42368,42368,43816,43816,43816,45352,45352,46888,46888,46888,48936,48936,48936,51024,51024,51024,52752,52752,52752,55056,55056,55056,55056,57336,57336,57336,59256,59256,59256,61664,61664,61664,61664,63776,63776,63776,63776,66592,66592,66592,66592,68808,68808,68808,71112},
{712,1480,2216,2984,3752,4392,5160,5992,6712,7480,8248,8760,9528,10296,11064,11832,12576,13536,14112,14688,15264,16416,16992,17568,18336,19080,19848,20616,21384,22152,22920,23688,24496,25456,25456,26416,27376,28336,29296,29296,30576,30576,31704,32856,32856,34008,35160,35160,36696,36696,37888,37888,39232,40576,40576,40576,42368,42368,43816,43816,45352,45352,46888,46888,48936,48936,48936,51024,51024,52752,52752,52752,55056,55056,55056,55056,57336,57336,57336,59256,59256,59256,61664,61664,61664,63776,63776,63776,66592,66592,66592,68808,68808,68808,71112,71112,71112,73712,73712,75376,75376,75376,75376,75376,75376,75376,75376,75376,75376,75376}
};
#else unsigned int TBStable[TBStable_rowCnt][110] = {{152,152,152,152,152,152,152,152,152,152,152,328,328,328,328,328,328,328,504,504,504,504,504,504,680,680,680,680,680,680,680,856,856,856,856,856,1032,1032,1032,1032,1032,1032,1032,1208,1208,1208,1208,1208,1208,1384,1384,1384,1384,1384,1384,1384,1560,1560,1560,1560,1560,1736,1736,1736,1736,1736,1736,1736,1912,1912,1912,1912,1912,2088,2088,2088,2088,2088,2088,2088,2264,2264,2264,2264,2264,2264,2264,2440,2440,2440,2440,2440,2440,2440,2616,2616,2616,2616,2616,2792,2792,2792,2792,2792,2792,2792,2792,2792,2792,2792},
unsigned int TBStable[TBStable_rowCnt][110] = {{16,32,152,88,120,152,176,208,224,256,288,328,344,376,392,424,456,488,504,536,568,600,616,648,680,712,744,776,776,808,840,872,904,936,968,1000,1032,1032,1064,1096,1128,1160,1192,1224,1256,1256,1288,1320,1352,1384,1416,1416,1480,1480,1544,1544,1608,1608,1608,1672,1672,1736,1736,1800,1800,1800,1864,1864,1928,1928,1992,1992,2024,2088,2088,2088,2152,2152,2216,2216,2280,2280,2280,2344,2344,2408,2408,2472,2472,2536,2536,2536,2600,2600,2664,2664,2728,2728,2728,2792,2792,2856,2856,2856,2984,2984,2984,2984,2984,3112}, {152,152,152,152,152,152,152,152,328,328,328,328,328,328,504,504,504,504,680,680,680,680,680,856,856,856,856,856,1032,1032,1032,1032,1032,1208,1208,1208,1208,1384,1384,1384,1384,1384,1384,1560,1560,1560,1736,1736,1736,1736,1736,1736,1912,1912,1912,1912,2088,2088,2088,2088,2088,2264,2264,2264,2264,2264,2440,2440,2440,2440,2440,2440,2616,2616,2616,2792,2792,2792,2792,2792,2792,2792,2792,2792,2792,2792,3240,3240,3240,3240,3368,3368,3368,3496,3496,3496,3496,3624,3624,3624,3752,3752,3752,3752,3848,3848,3848,3848,3848,3848},
{24,56,88,144,176,208,224,256,328,344,376,424,456,488,520,568,600,632,680,712,744,776,808,872,904,936,968,1000,1032,1064,1128,1160,1192,1224,1256,1288,1352,1384,1416,1416,1480,1544,1544,1608,1608,1672,1736,1736,1800,1800,1864,1864,1928,1992,1992,2024,2088,2088,2152,2152,2216,2280,2280,2344,2344,2408,2472,2472,2536,2536,2600,2600,2664,2728,2728,2792,2792,2856,2856,2856,2984,2984,2984,3112,3112,3112,3240,3240,3240,3240,3368,3368,3368,3496,3496,3496,3496,3624,3624,3624,3752,3752,3752,3752,3848,3848,3848,3848,3848,3848}, {152,152,328,152,152,152,152,328,328,328,328,504,504,504,504,680,680,680,680,856,856,856,856,1032,1032,1032,1032,1208,1208,1208,1384,1384,1384,1384,1384,1560,1560,1560,1736,1736,1736,1736,1912,1912,1912,2088,2088,2088,2088,2088,2264,2264,2264,2264,2440,2440,2440,2440,2616,2616,2616,2792,2792,2792,2792,2792,2792,2792,2792,2792,3240,3240,3240,3368,3368,3368,3496,3496,3496,3624,3624,3624,3752,3752,3848,3848,3848,3848,3848,3848,3848,3848,3848,4200,4200,4200,4200,4200,4200,4552,4552,4552,4552,4552,4552,4552,4552,4552,4904,4904},
{32,72,152,176,208,256,296,328,376,424,472,520,568,616,648,696,744,776,840,872,936,968,1000,1064,1096,1160,1192,1256,1288,1320,1384,1416,1480,1544,1544,1608,1672,1672,1736,1800,1800,1864,1928,1992,2024,2088,2088,2152,2216,2216,2280,2344,2344,2408,2472,2536,2536,2600,2664,2664,2728,2792,2856,2856,2856,2984,2984,3112,3112,3112,3240,3240,3240,3368,3368,3368,3496,3496,3496,3624,3624,3624,3752,3752,3848,3848,3848,3848,3848,3848,3848,3848,3848,4200,4200,4200,4200,4200,4200,4552,4552,4552,4552,4552,4552,4552,4552,4552,4904,4904}, {152,152,328,152,152,328,328,328,504,504,504,680,680,680,856,856,856,1032,1032,1032,1208,1208,1208,1384,1384,1384,1384,1560,1560,1736,1736,1736,1912,1912,1912,2088,2088,2088,2264,2264,2264,2440,2440,2440,2440,2616,2616,2792,2792,2792,2792,2792,2792,2792,3240,3240,3368,3368,3496,3496,3624,3624,3624,3752,3752,3848,3848,3848,3848,3848,3848,4200,4200,4200,4200,4200,4552,4552,4552,4552,4552,4552,4552,4904,4904,4904,4904,4904,4904,5256,5256,5256,5256,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,6312,6312},
{40,104,176,208,256,328,392,440,504,568,616,680,744,808,872,904,968,1032,1096,1160,1224,1256,1320,1384,1416,1480,1544,1608,1672,1736,1800,1864,1928,1992,2024,2088,2152,2216,2280,2344,2408,2472,2536,2536,2600,2664,2728,2792,2856,2856,2984,2984,3112,3112,3240,3240,3368,3368,3496,3496,3624,3624,3624,3752,3752,3848,3848,3848,3848,3848,3848,4200,4200,4200,4200,4200,4552,4552,4552,4552,4552,4552,4552,4904,4904,4904,4904,4904,4904,5256,5256,5256,5256,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,6312,6312}, {152,152,152,152,328,328,328,504,504,680,680,680,856,856,1032,1032,1032,1208,1208,1384,1384,1384,1560,1736,1736,1736,1912,1912,2088,2088,2088,2264,2264,2264,2440,2440,2616,2616,2792,2792,2792,2792,2792,2792,3240,3240,3368,3496,3496,3624,3624,3752,3752,3848,3848,3848,3848,3848,4200,4200,4200,4200,4552,4552,4552,4552,4552,4904,4904,4904,4904,4904,4904,5256,5256,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,6312,6312,6312,6312,5608,7016,7016,7016,7016,7016,7016,7720,7720,7720,7720},
{56,120,208,256,328,408,488,552,632,696,776,840,904,1000,1064,1128,1192,1288,1352,1416,1480,1544,1608,1736,1800,1864,1928,1992,2088,2152,2216,2280,2344,2408,2472,2600,2664,2728,2792,2856,2984,2984,3112,3112,3240,3240,3368,3496,3496,3624,3624,3752,3752,3848,3848,3848,3848,3848,4200,4200,4200,4200,4552,4552,4552,4552,4552,4904,4904,4904,4904,4904,4904,5256,5256,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,6312,6312,6312,6312,5608,7016,7016,7016,7016,7016,7016,7720,7720,7720,7720}, {152,152,152,328,328,504,504,680,680,856,856,1032,1032,1208,1208,1384,1384,1384,1560,1736,1736,1912,1912,2088,2088,2264,2264,2440,2440,2616,2616,2792,2792,2792,2792,2792,3240,3368,3496,3496,3624,3752,3752,3848,3848,3848,3848,4200,4200,4200,4552,4552,4552,4552,4552,4904,4904,4904,4904,5256,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,6312,7016,7016,7016,7016,7016,7016,7720,7720,7720,7720,7720,7720,7720,7720,7720,8424,8424,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9080,9080,9080},
{72,144,224,328,424,504,600,680,776,872,968,1032,1128,1224,1320,1384,1480,1544,1672,1736,1864,1928,2024,2088,2216,2280,2344,2472,2536,2664,2728,2792,2856,2984,3112,3112,3240,3368,3496,3496,3624,3752,3752,3848,3848,3848,3848,4200,4200,4200,4552,4552,4552,4552,4552,4904,4904,4904,4904,5256,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,6312,7016,7016,7016,7016,7016,7016,7720,7720,7720,7720,7720,7720,7720,7720,7720,8424,8424,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9080,9080,9080}, {328,152,328,328,504,504,680,680,856,1032,1032,1208,1208,1384,1384,1560,1736,1736,1912,2088,2088,2264,2264,2440,2440,2616,2792,2792,2792,2792,3240,3368,3496,3496,3624,3752,3848,3848,3848,3848,4200,4200,4552,4552,4552,4552,4904,4904,4904,4904,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,6312,7016,7016,7016,7016,7720,7720,7720,7720,7720,7720,7720,7720,8424,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,9784,11192,10488,10488,10488,10488,10488,10488,10488,11192,11192,11192},
{328,176,328,392,504,600,712,808,936,1032,1128,1224,1352,1480,1544,1672,1736,1864,1992,2088,2216,2280,2408,2472,2600,2728,2792,2984,2984,3112,3240,3368,3496,3496,3624,3752,3848,3848,3848,3848,4200,4200,4552,4552,4552,4552,4904,4904,4904,4904,5256,5256,5256,5608,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,6312,7016,7016,7016,7016,7720,7720,7720,7720,7720,7720,7720,7720,8424,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,9784,11192,10488,10488,10488,10488,10488,10488,10488,11192,11192,11192}, {152,152,328,680,504,680,680,856,1032,1208,1208,1384,1560,1560,1736,1912,2088,2088,2264,2440,2440,2616,2792,2792,2792,3240,3368,3368,3496,3624,3752,3848,3848,3848,4200,4200,4552,4552,4552,4904,4904,4904,5256,5256,5256,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,7016,7016,7016,7016,7720,7720,7720,7720,7720,7720,8424,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,9784,10488,10488,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600},
{104,224,328,680,584,712,840,968,1096,1224,1320,1480,1608,1672,1800,1928,2088,2216,2344,2472,2536,2664,2792,2984,3112,3240,3368,3368,3496,3624,3752,3848,3848,3848,4200,4200,4552,4552,4552,4904,4904,4904,5256,5256,5256,5608,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,6312,6312,7016,7016,7016,7016,7720,7720,7720,7720,7720,7720,8424,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,9784,10488,10488,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600}, {152,152,328,504,680,680,856,1032,1208,1384,1384,1560,1736,1912,2088,2088,2264,2440,2616,2792,2792,2792,3240,3368,3496,3624,3752,3848,3848,4200,4200,4552,4552,4552,4904,4904,4904,5256,5256,5256,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,7016,7016,7016,7016,7720,7720,7720,7720,7720,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,10488,10488,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008},
{120,256,392,536,680,808,968,1096,1256,1384,1544,1672,1800,1928,2088,2216,2344,2536,2664,2792,2984,3112,3240,3368,3496,3624,3752,3848,3848,4200,4200,4552,4552,4552,4904,4904,4904,5256,5256,5256,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,7016,7016,7016,7016,7720,7720,7720,7720,7720,8424,8424,8424,8424,9080,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,10488,10488,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008}, {152,152,328,504,680,856,1032,1208,1384,1384,1736,1736,1912,2088,2264,2440,2616,2792,2792,2792,3368,3496,3624,3752,3848,3848,4200,4200,4552,4552,4904,4904,4904,5256,5256,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,7016,7016,7016,7720,7720,7720,7720,7720,8424,8424,8424,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,10488,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824},
{136,296,456,616,776,936,1096,1256,1416,1544,1736,1864,2024,2216,2344,2536,2664,2856,2984,3112,3368,3496,3624,3752,3848,3848,4200,4200,4552,4552,4904,4904,4904,5256,5256,5608,5608,5608,5608,5608,6312,6312,6312,6312,6312,7016,7016,7016,7720,7720,7720,7720,7720,8424,8424,8424,9080,9080,9080,9080,9080,9784,9784,9784,9784,9784,10488,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824}, {152,328,504,680,856,1032,1208,1384,1384,1736,1912,2088,2264,2440,2616,2792,2792,2792,3368,3496,3752,3848,3848,4200,4200,4552,4552,4904,4904,5256,5256,5608,5608,5608,5608,5608,6312,6312,6312,6312,7016,7016,7016,7720,7720,7720,7720,8424,8424,8424,9080,9080,9080,9080,9080,9784,9784,9784,9784,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912},
{144,328,504,680,872,1032,1224,1384,1544,1736,1928,2088,2280,2472,2664,2792,2984,3112,3368,3496,3752,3848,3848,4200,4200,4552,4552,4904,4904,5256,5256,5608,5608,5608,5608,5608,6312,6312,6312,6312,7016,7016,7016,7720,7720,7720,7720,8424,8424,8424,9080,9080,9080,9080,9080,9784,9784,9784,9784,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912}, {152,328,504,680,856,1032,1384,1560,1736,1912,2088,2264,2440,2792,2792,3240,3496,3624,3848,3848,4200,4200,4552,4552,4904,5256,5256,5608,5608,5608,5608,6312,6312,6312,6312,7016,7016,7720,7720,7720,7720,8424,8424,8424,9080,9080,9080,9080,9784,9784,9784,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024},
{176,376,584,776,1000,1192,1384,1608,1800,2024,2216,2408,2600,2792,2984,3240,3496,3624,3848,3848,4200,4200,4552,4552,4904,5256,5256,5608,5608,5608,5608,6312,6312,6312,6312,7016,7016,7720,7720,7720,7720,8424,8424,8424,9080,9080,9080,9080,9784,9784,9784,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024}, {152,328,680,856,1032,1208,1560,1736,1912,2264,2440,2616,2792,3240,3368,3624,3848,3848,4200,4552,4552,4904,5256,5256,5608,5608,5608,6312,6312,6312,6312,7016,7016,7720,7720,7720,8424,8424,8424,9080,9080,9080,9784,9784,9784,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,23136,23136,23136,25248},
{208,440,680,904,1128,1352,1608,1800,2024,2280,2472,2728,2984,3240,3368,3624,3848,3848,4200,4552,4552,4904,5256,5256,5608,5608,5608,6312,6312,6312,6312,7016,7016,7720,7720,7720,8424,8424,8424,9080,9080,9080,9784,9784,9784,10488,10488,10488,10488,11192,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,23136,23136,23136,25248}, {152,328,680,856,1208,1384,1736,1912,2264,2440,2792,2792,3368,3624,3848,3848,4200,4552,4904,4904,5256,5608,5608,5608,6312,6312,6312,7016,7016,7720,7720,7720,8424,8424,9080,9080,9080,9784,9784,9784,10488,10488,10488,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040},
{224,488,744,1000,1256,1544,1800,2024,2280,2536,2856,3112,3368,3624,3848,3848,4200,4552,4904,4904,5256,5608,5608,5608,6312,6312,6312,7016,7016,7720,7720,7720,8424,8424,9080,9080,9080,9784,9784,9784,10488,10488,10488,11192,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040}, {152,504,680,1032,1384,1736,1912,2264,2440,2792,2792,3496,3752,3848,4200,4552,4904,4904,5256,5608,5608,5608,6312,6312,7016,7016,7720,7720,7720,8424,8424,9080,9080,9784,9784,9784,10488,10488,10488,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856},
{256,552,840,1128,1416,1736,1992,2280,2600,2856,3112,3496,3752,3848,4200,4552,4904,4904,5256,5608,5608,5608,6312,6312,7016,7016,7720,7720,7720,8424,8424,9080,9080,9784,9784,9784,10488,10488,10488,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856}, {152,504,856,1208,1384,1736,2088,2440,2616,2792,3368,3624,3848,4200,4552,4904,4904,5256,5608,5608,6312,6312,6312,7016,7720,7720,7720,8424,8424,9080,9080,9784,9784,9784,10488,10488,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,30856,33672,33672},
{280,600,904,1224,1544,1800,2152,2472,2728,3112,3368,3624,3848,4200,4552,4904,4904,5256,5608,5608,6312,6312,6312,7016,7720,7720,7720,8424,8424,9080,9080,9784,9784,9784,10488,10488,11192,11192,11192,11192,11192,12600,12600,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,30856,33672,33672}, {328,504,856,1208,1560,1912,2264,2440,2792,3240,3624,3848,4200,4552,4904,4904,5256,5608,5608,6312,6312,7016,7016,7720,7720,8424,8424,9080,9080,9784,9784,9784,10488,10488,11192,11192,11192,11192,11192,12600,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,30856,33672,33672,33672,33672,35056,35056,35056,35056},
{328,632,968,1288,1608,1928,2280,2600,2984,3240,3624,3848,4200,4552,4904,4904,5256,5608,5608,6312,6312,7016,7016,7720,7720,8424,8424,9080,9080,9784,9784,9784,10488,10488,11192,11192,11192,11192,11192,12600,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,15416,16824,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,30856,33672,33672,33672,33672,35056,35056,35056,35056}, {328,680,1032,1384,1736,2088,2440,2792,3240,3624,3848,4200,4552,4904,5256,5608,5608,6312,6312,7016,7016,7720,7720,8424,9080,9080,9784,9784,9784,10488,10488,11192,11192,11192,11192,12600,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576},
{336,696,1064,1416,1800,2152,2536,2856,3240,3624,3848,4200,4552,4904,5256,5608,5608,6312,6312,7016,7016,7720,7720,8424,9080,9080,9784,9784,9784,10488,10488,11192,11192,11192,11192,12600,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576}, {328,680,1032,1384,1912,2264,2792,2792,3624,3848,4200,4552,4904,5256,5608,5608,6312,7016,7016,7720,7720,8424,9080,9080,9784,9784,10488,10488,11192,11192,11192,11192,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096},
{376,776,1160,1544,1992,2344,2792,3112,3624,3848,4200,4552,4904,5256,5608,5608,6312,7016,7016,7720,7720,8424,9080,9080,9784,9784,10488,10488,11192,11192,11192,11192,12600,12600,14008,14008,14008,14008,14008,15416,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,23136,23136,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096}, {328,680,1208,1736,2088,2440,2792,3496,3848,4200,4552,4904,5256,5608,6312,6312,7016,7720,7720,8424,9080,9080,9784,9784,10488,10488,11192,11192,11192,12600,12600,12600,14008,14008,14008,14008,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296},
{408,840,1288,1736,2152,2600,2984,3496,3848,4200,4552,4904,5256,5608,6312,6312,7016,7720,7720,8424,9080,9080,9784,9784,10488,10488,11192,11192,11192,12600,12600,12600,14008,14008,14008,14008,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296}, {328,856,1384,1736,2264,2792,3240,3752,3848,4552,4904,5256,5608,6312,6312,7016,7720,7720,8424,9080,9784,9784,10488,10488,11192,11192,11192,12600,12600,14008,14008,14008,14008,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,46296,46296,46296,50520,50520,50520},
{440,904,1384,1864,2344,2792,3240,3752,3848,4552,4904,5256,5608,6312,6312,7016,7720,7720,8424,9080,9784,9784,10488,10488,11192,11192,11192,12600,12600,14008,14008,14008,14008,15416,15416,16824,16824,16824,16824,16824,18912,18912,18912,18912,18912,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,46296,46296,46296,50520,50520,50520}, {328,856,1384,1912,2440,2792,3496,3848,4552,4904,5256,5608,6312,6312,7016,7720,8424,9080,9080,9784,10488,10488,11192,11192,11192,12600,12600,14008,14008,14008,15416,15416,15416,16824,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016},
{488,1000,1480,1992,2472,2984,3496,3848,4552,4904,5256,5608,6312,6312,7016,7720,8424,9080,9080,9784,10488,10488,11192,11192,11192,12600,12600,14008,14008,14008,15416,15416,15416,16824,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016}, {504,1032,1560,2088,2616,3240,3752,4200,4552,5256,5608,6312,6312,7016,7720,8424,9080,9080,9784,10488,11192,11192,11192,12600,12600,14008,14008,14008,15416,15416,16824,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944},
{520,1064,1608,2152,2664,3240,3752,4200,4552,5256,5608,6312,6312,7016,7720,8424,9080,9080,9784,10488,11192,11192,11192,12600,12600,14008,14008,14008,15416,15416,16824,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,33672,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944}, {504,1032,1736,2264,2792,3496,3848,4552,4904,5608,5608,6312,7016,7720,8424,9080,9784,9784,10488,11192,11192,11192,12600,12600,14008,14008,14008,15416,15416,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,58944,58944,61736},
{552,1128,1736,2280,2856,3496,3848,4552,4904,5608,5608,6312,7016,7720,8424,9080,9784,9784,10488,11192,11192,11192,12600,12600,14008,14008,14008,15416,15416,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,58944,58944,61736}, {504,1032,1736,2264,2792,3624,4200,4904,5256,5608,6312,7016,7720,8424,9080,9784,9784,10488,11192,11192,12600,12600,14008,14008,14008,15416,15416,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,23136,23136,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,58944,61736,61736,61736,61736,61736,61736,61736,61736},
{584,1192,1800,2408,2984,3624,4200,4904,5256,5608,6312,7016,7720,8424,9080,9784,9784,10488,11192,11192,12600,12600,14008,14008,14008,15416,15416,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,21024,23136,23136,25248,25248,25248,25248,25248,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,58944,61736,61736,61736,61736,61736,61736,61736,61736}, {504,1208,1736,2440,2792,3752,4200,4904,5608,5608,6312,7016,7720,8424,9080,9784,10488,11192,11192,11192,12600,14008,14008,14008,15416,15416,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,58944,61736,61736,61736,61736,61736,61736,61736,61736,67368,67368,67368,69456},
{616,1256,1864,2536,3112,3752,4200,4904,5608,5608,6312,7016,7720,8424,9080,9784,10488,11192,11192,11192,12600,14008,14008,14008,15416,15416,16824,16824,16824,18912,18912,18912,18912,21024,21024,21024,23136,23136,23136,25248,25248,25248,25248,28040,28040,28040,28040,28040,30856,30856,30856,30856,33672,33672,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,58944,61736,61736,61736,61736,61736,61736,61736,61736,67368,67368,67368,69456}, {680,1384,2088,2792,3752,4200,4904,5608,6312,7016,7720,8424,9080,9784,10488,11192,11192,12600,14008,14008,14008,15416,16824,16824,16824,18912,18912,18912,21024,21024,21024,23136,23136,25248,25248,25248,25248,28040,28040,28040,28040,28040,30856,30856,30856,33672,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,61736,61736,61736,61736,61736,61736,67368,67368,67368,69456,69456,69456,69456,69456,75792,69456,69456,69456,69456,69456,69456,69456,69456,69456,69456}
{712,1480,2216,2984,3752,4200,4904,5608,6312,7016,7720,8424,9080,9784,10488,11192,11192,12600,14008,14008,14008,15416,16824,16824,16824,18912,18912,18912,21024,21024,21024,23136,23136,25248,25248,25248,25248,28040,28040,28040,28040,28040,30856,30856,30856,33672,35056,35056,35056,35056,35056,35056,38576,38576,38576,38576,42096,42096,42096,42096,42096,42096,46296,46296,46296,46296,46296,50520,50520,50520,50520,50520,54016,54016,54016,54016,54016,54016,54016,58944,58944,58944,58944,58944,58944,61736,61736,61736,61736,61736,61736,67368,67368,67368,69456,69456,69456,69456,69456,75792,69456,69456,69456,69456,69456,69456,69456,69456,69456,69456}
}; };
#endif
unsigned int TBStable1C[32] = {40, 56, 72, 120, 136, 144, 176, 208, 224, 256, 280, 296, 328, 336, 392, 488, 552, 600, 632, 696, 776, 840, 904, 1000, 1064, 1128, 1224, 1288, 1384, 1480, 1608, 1736}; unsigned int TBStable1C[32] = {40, 56, 72, 120, 136, 144, 176, 208, 224, 256, 280, 296, 328, 336, 392, 488, 552, 600, 632, 696, 776, 840, 904, 1000, 1064, 1128, 1224, 1288, 1384, 1480, 1608, 1736};
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
#define openair_free(y,x) free((y)) #define openair_free(y,x) free((y))
#define PAGE_SIZE 4096 #define PAGE_SIZE 4096
#define RX_NB_TH_MAX 2 #define RX_NB_TH_MAX 3
#define RX_NB_TH 2 #define RX_NB_TH 3
//#ifdef SHRLIBDEV //#ifdef SHRLIBDEV
......
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
#include "types.h" #include "types.h"
//#include "defs.h" //#include "defs.h"
#define RX_NB_TH_MAX 2 #define RX_NB_TH_MAX 3
#define RX_NB_TH 2 #define RX_NB_TH 3
#define LTE_SLOTS_PER_SUBFRAME 2 #define LTE_SLOTS_PER_SUBFRAME 2
......
...@@ -3044,7 +3044,7 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin ...@@ -3044,7 +3044,7 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
else{ else{
if (ue->pbch_vars[eNB_id]->pdu_errors_conseq>=100) { if (ue->pbch_vars[eNB_id]->pdu_errors_conseq>=100) {
LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n"); LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n");
mac_xface->macphy_exit("More that 100 consecutive PBCH errors!"); //mac_xface->macphy_exit("More that 100 consecutive PBCH errors!");
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment