#define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; #include using namespace std; const int MOD=998244353; ll modpow(ll x,ll n){ x%=MOD; ll ans=1; while(n){ if(n&1) ans=ans*x%MOD; x=x*x%MOD; n/=2; } return ans; } int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); int n,m,q; cin>>n>>m>>q; vector B(200200); B[0]=1; for(int i=1;i<200200;i++) B[i]=B[i-1]*m%MOD; vector A(n); rep(i,n){ cin>>A[i]; A[i]--; } vector S(n+1); ll t=1; for(int i=n-1;i>=0;i--){ S[i]=(S[i+1]+A[i]*t%MOD)%MOD; t=t*m%MOD; } while(q--){ int l,r; cin>>l>>r; l--; cout<<((S[l]-S[r]+MOD)%MOD*modpow(B[n-r],MOD-2)%MOD+1)%MOD<<'\n'; } return 0; }