#include #define int long long #define matsuri pair //const int iris = 1e9+7; const int iris = 998244353; using namespace std; void solve() { auto qwq=[&](int a,int b=iris-2) { int res=1; while(b) { if(b&1) res=res*a%iris; a=a*a%iris; b/=2; } return res; }; int n,m,q; cin>>n>>m>>q; vector bit(n+1); auto add=[&](int a,int b) { for(int i=a;i<=n;i+=i&-i) bit[i]=(bit[i]+b)%iris; }; auto qry=[&](int a) { int res=0; for(int i=a;i>0;i-=i&-i) res=(res+bit[i])%iris; return res; }; for(int i=1;i<=n;i++) { int a; cin>>a; add(i, (a-1)*qwq(m,n-i)%iris); } while(q--) { int l,r; cin>>l>>r; int ans=(qry(r)-qry(l-1)+iris)%iris; cout<<(ans*qwq(qwq(m, n-r))+1)%iris<<'\n'; } } signed main() { ios::sync_with_stdio(0); cin.tie(0); int T=1; //cin>>T; while(T--) solve(); return 0; }