SEQ SPOJ code not giving any output. Please find the error in code

#include<bits/stdc++.h>

#define ll long long

#define MOD 1000000007

using namespace std;

vector a, b, c;

ll k;

vector<vector> multiply(vector<vector> A, vector<vector> B){

//Matrix to store the result

vector<vector<ll>> C(k, vector<ll>(k));

for(int i=0;i<k;i++){

    for(int j=0;j<k;j++){

        for(int x=0;x<k;x++){

            C[i][j] = (C[i][j] + (A[i][x]*B[x][j])%MOD)%MOD;

        }

    }

}

return C;

}

vector<vector> pow(vector<vector> &T, ll p){

if(p==1){

    return T;

}

if(p&1){

    return multiply(T, pow(T, p-1));

}

else{

    vector<vector<ll>> X = pow(T, p/2);

    return multiply(X, X);

}

}

ll compute(ll n){

if(n==0){

    return 0;

}

if(n<=k){

    return b[n-1];

}

//otherwise using matrix exponentiation

vector<ll> F1(k);



//Indexing from 1

for(int i=0;i<k;i++){

    F1[i] = b[i];

}

vector<vector<ll>> T(k, vector<ll>(k));

for(int i=0;i<k;i++){

    for(int j=0;i<k;j++){

        if(i<k){

            if(j == i+1){

                T[i][j] = 1;

            }

            else{

                T[i][j] = 0;

            }

        }

        else{

            T[i][j] = c[k-j-1];

        }

    }

}

T = pow(T, n-1);

ll ans=0;

for(int i=0;i<k;i++){

    ans = ans + (T[0][i]*F1[i]%MOD)%MOD;

}

return ans;

}

int main(){

ll t, n ,num;

cin>>t;

while(t--){

    cin>>k;

    // F1 vector

    for(int i=0;i<k;i++){

        cin>>num;

        b.push_back(num);

    }

    //coefficients

    for(int i=0;i<k;i++){

        cin>>num;

        c.push_back(num);

    }

    //value of n (nth term to be computed in sequence)

    cin>>n;

    cout<<compute(n)<<endl;

    b.clear();

    c.clear();

}

return 0;

}