why this code is giving WA for problem Luv Kush and FX Sequence based on matrix exponentiation.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define nl "\n"
#define ff first
#define ss second
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pp pop_back
#define bs binary_search
#define pll pair<ll,ll>
#define ppll pair<ll,pll>
#define sll stack<ll>
#define qll queue<ll>
#define vll vector<ll>
#define vpll vector<pll>
#define vc vector <char>
#define matrix vector<vector<ll>>
#define all(x) x.begin(),x.end()
#define loop(i,s,n) for(ll i=s;i<n;i++)
#define test ll t ; cin>>t; while(t--)
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL);
ll mod = 1000000007; double pi = 3.1415926535;
ll K = 2; //* 1-> CHOOSE K
ll n, a, b, c, d, e, f, MOD = 998244353;
// computes A * B
matrix mul(matrix A, matrix B)
{
matrix C(K + 1, vector<ll>(K + 1));
loop(i, 1, K + 1) loop(j, 1, K + 1) loop(k, 1, K + 1) C[i][j] = (C[i][j] + (A[i][k] % MOD) * (B[k][j] % MOD)) % MOD;
return C;
}
// computes A ^ p
matrix pow(matrix A, ll p)
{
if (p == 1) return A;
if (p % 2) return mul(A, pow(A, p - 1));
matrix X = pow(A, p / 2);
return mul(X, X);
}
// returns the N-th term of recurring sequence
ll mat_expo(ll n)
{
//* 2-> create vector F1
ll F1[K + 1];
F1[1] = b;
F1[2] = a;
//* 3-> fill matrix T (TRANSFORMATION MATRIX)
matrix T(K + 1, vector<ll>(K + 1));
T[1][1] = e, T[1][2] = f;
T[2][1] = 1, T[2][2] = 0;
// raise T to the (N-1)th power
if (n == 0) return a;
if (n == 1) return b;
T = pow(T, n - 1);
// the answer is the (first row of T) * F1
ll res = 0;
loop(i, 1, K + 1)
{
res = (res + ((T[1][i] * F1[i])%MOD)) % MOD;
}
return res;
}
void solve()
{
cin >> n >> a >> b >> c >> d >> e >> f;
a %= MOD; b %= MOD; c %= MOD; d %= MOD; e %= MOD; f %= MOD;
ll mfs = mat_expo(n), xs;
if (n % 3 == 0) xs = c;
else if (n % 3 == 1) xs = d;
else xs = (c ^ d) % MOD;
ll ans = ((mfs * xs) % MOD) + (((mfs-xs)%MOD+MOD)%MOD) ;
cout << ans%MOD << nl;
}
int main() {
fast_io;
#ifndef ONLINE_JUDGE
freopen("input1.txt", "r", stdin);
freopen("output1.txt", "w", stdout);
#endif
test{
solve();
}
return 0;
}
IT WILL BE REALLY HELPFUL IF SOMEONE CAN HELP.
THANK YOU