为什么会runtime error,求解(语言-c语言)

#include <stdio.h>
#include <math.h>
#include <string.h>
int kk[55];
int aa[55];
int okb[3605];
int bb[3605];
int p=0;
int L,R;
void fei1(int a,int b){
    //puts("1"); 
    kk[0]=1,kk[1]=1;
    int i=1;
    while(kk[i]<=R){
        i++;
        kk[i]=a*kk[i-1]+b*kk[i-2];
        //printf("%d ",kk[i]);
    }
}//数列X 
void fei2(int c,int d){
    //puts("2");
    aa[0]=1,aa[1]=1;
    int i=1;
    while(aa[i]<=R){
                i++;
        aa[i]=c*aa[i-1]+d*aa[i-2];

    }
    //puts("2.1");
}//数列Y 
void fei3(){
    //puts("3");
    p=0;
    for(int i=0;i<55;i++){
        if(kk[i]==0) break;
        for(int j=0;j<55;j++){
            if(aa[j]==0) continue;
            okb[p]=kk[i]+aa[j];
            //printf("%d ",okb[p]);
            p++;            
        }
    }
    //puts("");
}//数列Z 
void paixu(){
    //puts("4");
//    for(int i=0;i<p;i++){
//        printf("%d ",okb[i]);
//    }
//    puts("");
    for(int i=0;i<p;i++){
        for(int j=i+1;j<p;j++){
            if(okb[i]==okb[j]) {
                //puts("做了"); 
                for(int k=j+1;k<p;k++){
                    bb[k]=okb[k];
                }
                for(int k=j+1;k<p;k++){
                    okb[k-1]=bb[k];
                }
                p--;
                j--;
            }
        }
    }
//    for(int i=0;i<p;i++){
//        printf("%d ",okb[i]);
//    }
//    puts("");
    for(int i=0;i<p-1;i++){
        for(int j=0;j<p-i-1;j++){
            if(okb[j]>okb[j+1]){
                int temp;
                temp=okb[j];
                okb[j]=okb[j+1];
                okb[j+1]=temp;
            }
        }
    }
//        for(int i=0;i<p;i++){
//        printf("%d ",okb[i]);
//    }
//    puts("shabi");
}//排序和把相同的数筛去; 
int choose(){
    //puts("5");
    int i=0;
    while(okb[i]<L){
        i++;
    }
    int x=i;
    while(okb[i]<=R){
        i++;
    }
    i--;
    int y=i;
    int max=0,m=0;
    int g=x;
    //printf("%d %d \n",g,y);
    while(g<y-1){
        int f=0;
        for(int j=g;j<=y-1;j++){
            //printf(" %d %d\n",okb[j],okb[j+1]);
            if(okb[j]==okb[j+1]-1) {
                g=j;
                f++;
            }
            else if(okb[j]!=okb[j+1]-1) {
                g=j+1;
                //    puts("1");
                break;
            }
        }
        if(max<f) max=f+1;
        //printf("%d\n",max);
    }
    return max;
    
} 
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        int a,b,c,d;
        scanf("%d%d%d%d",&a,&b,&c,&d);
        scanf("%d%d",&L,&R);
        fei1(a,b);
        fei2(c,d);
        fei3();
        paixu();
        printf("%d\n",choose());
        memset(kk,0,sizeof(kk));
        memset(aa,0,sizeof(aa));
        memset(okb,0,sizeof(okb));
        memset(bb,0,sizeof(bb));
    }
}