#include <bits/stdc++.h>
#define clr(x) memset((x), 0, sizeof(x))
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define mp make_pair
#define For(i, st, en) for(int i=(st); i<=(int)(en); i++)
#define Ford(i, st, en) for(int i=(st); i>=(int)(en); i--)
#define forn(i, n) for(int i=0; i<(int)(n); i++)
#define ford(i, n) for(int i=(n)-1; i>=0; i--)
#define fori(it, x) for (__typeof((x).begin()) it = (x).begin(); it != (x).end(); it++)
#define in(x) int (x); input((x));
#define x first
#define y second
#define less(a,b) ((a) < (b) - EPS)
#define more(a,b) ((a) > (b) + EPS)
#define eq(a,b) (fabs((a) - (b)) < EPS)
#define remax(a, b) ((a) = (b) > (a) ? (b) : (a))
#define remin(a, b) ((a) = (b) < (a) ? (b) : (a))
using namespace std;
typedef long double ld; template <class _T> inline _T sqr(const _T& x) {return x * x;} template <class _T> inline string tostr(const _T& a) {ostringstream os(""); os << a; return os.str();} const ld PI = 3.1415926535897932384626433832795L; const ld EPS = 5e-12; char TEMPORARY_CHAR; typedef long long ll; typedef unsigned long long ull; typedef set < int > SI; typedef vector < int > VI; typedef vector < vector < int > > VVI; typedef map < string, int > MSI; typedef pair < int, int > PII; const int INF = 1e9; inline void input(int &a) {a = 0; while (((TEMPORARY_CHAR = getchar()) > '9' || TEMPORARY_CHAR < '0') && (TEMPORARY_CHAR != '-')){} char neg = 0; if (TEMPORARY_CHAR == '-') {neg = 1; TEMPORARY_CHAR = getchar();} while (TEMPORARY_CHAR <= '9' && TEMPORARY_CHAR >= '0') {a = 10 * a + TEMPORARY_CHAR - '0'; TEMPORARY_CHAR = getchar();} if (neg) a = -a;} inline void out(int a) {if (!a) putchar('0'); if (a < 0) {putchar('-'); a = -a;} char s[10]; int i; for(i = 0; a; ++i) {s[i] = '0' + a % 10; a /= 10;} ford(j, i) putchar(s[j]);} inline int nxt() {in(ret); return ret;}
int main()
{
in(N); in(q); in(M);
int a[N + 1];
for(int i = 1; i <= N; ++i)
a[i] = nxt();
int log_N = 0;
while ((1 << log_N) < N)
log_N++;
int ans[N + 1][log_N + 1];
for(int i = 0; i <= log_N; ++i)
ans[0][i] = 1;
int i = 1;
int sum = 0;
for(int j = 1; j <= N; ++j)
{
sum += a[j];
while(sum > M)
sum -= a[i++];
ans[j][0] = i;
for(int l = 1; l <= log_N; ++l)
ans[j][l] = ans[ans[j][l - 1] - 1][l - 1];
}
while(q--)
{
in(u); in(v);
int p = 0;
if (v >= u)
{
puts("1");
continue;
}
while(v)
{
if (v & 1)
u = ans[u][p] - 1;
++p;
v >>= 1;
}
out(u + 1);
puts("");
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgY2xyKHgpIG1lbXNldCgoeCksIDAsIHNpemVvZih4KSkKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIEZvcihpLCBzdCwgZW4pIGZvcihpbnQgaT0oc3QpOyBpPD0oaW50KShlbik7IGkrKykKI2RlZmluZSBGb3JkKGksIHN0LCBlbikgZm9yKGludCBpPShzdCk7IGk+PShpbnQpKGVuKTsgaS0tKQojZGVmaW5lIGZvcm4oaSwgbikgZm9yKGludCBpPTA7IGk8KGludCkobik7IGkrKykKI2RlZmluZSBmb3JkKGksIG4pIGZvcihpbnQgaT0obiktMTsgaT49MDsgaS0tKQojZGVmaW5lIGZvcmkoaXQsIHgpIGZvciAoX190eXBlb2YoKHgpLmJlZ2luKCkpIGl0ID0gKHgpLmJlZ2luKCk7IGl0ICE9ICh4KS5lbmQoKTsgaXQrKykKI2RlZmluZSBpbih4KSBpbnQgKHgpOyBpbnB1dCgoeCkpOwojZGVmaW5lIHggZmlyc3QKI2RlZmluZSB5IHNlY29uZAojZGVmaW5lIGxlc3MoYSxiKSAoKGEpIDwgKGIpIC0gRVBTKQojZGVmaW5lIG1vcmUoYSxiKSAoKGEpID4gKGIpICsgRVBTKQojZGVmaW5lIGVxKGEsYikgKGZhYnMoKGEpIC0gKGIpKSA8IEVQUykKI2RlZmluZSByZW1heChhLCBiKSAoKGEpID0gKGIpID4gKGEpID8gKGIpIDogKGEpKQojZGVmaW5lIHJlbWluKGEsIGIpICgoYSkgPSAoYikgPCAoYSkgPyAoYikgOiAoYSkpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7IHRlbXBsYXRlIDxjbGFzcyBfVD4gaW5saW5lIF9UIHNxcihjb25zdCBfVCYgeCkge3JldHVybiB4ICogeDt9IHRlbXBsYXRlIDxjbGFzcyBfVD4gaW5saW5lIHN0cmluZyB0b3N0cihjb25zdCBfVCYgYSkge29zdHJpbmdzdHJlYW0gb3MoIiIpOyBvcyA8PCBhOyByZXR1cm4gb3Muc3RyKCk7fSBjb25zdCBsZCBQSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NUw7IGNvbnN0IGxkIEVQUyA9IDVlLTEyOyBjaGFyIFRFTVBPUkFSWV9DSEFSOyB0eXBlZGVmIGxvbmcgbG9uZyBsbDsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOyB0eXBlZGVmIHNldCA8IGludCA+IFNJOyB0eXBlZGVmIHZlY3RvciA8IGludCA+IFZJOyB0eXBlZGVmIHZlY3RvciA8IHZlY3RvciA8IGludCA+ID4gVlZJOyB0eXBlZGVmIG1hcCA8IHN0cmluZywgaW50ID4gTVNJOyB0eXBlZGVmIHBhaXIgPCBpbnQsIGludCA+IFBJSTsgY29uc3QgaW50IElORiA9IDFlOTsgaW5saW5lIHZvaWQgaW5wdXQoaW50ICZhKSB7YSA9IDA7IHdoaWxlICgoKFRFTVBPUkFSWV9DSEFSID0gZ2V0Y2hhcigpKSA+ICc5JyB8fCBURU1QT1JBUllfQ0hBUiA8ICcwJykgJiYgKFRFTVBPUkFSWV9DSEFSICE9ICctJykpe30gY2hhciBuZWcgPSAwOyBpZiAoVEVNUE9SQVJZX0NIQVIgPT0gJy0nKSB7bmVnID0gMTsgVEVNUE9SQVJZX0NIQVIgPSBnZXRjaGFyKCk7fSB3aGlsZSAoVEVNUE9SQVJZX0NIQVIgPD0gJzknICYmIFRFTVBPUkFSWV9DSEFSID49ICcwJykge2EgPSAxMCAqIGEgKyBURU1QT1JBUllfQ0hBUiAtICcwJzsgVEVNUE9SQVJZX0NIQVIgPSBnZXRjaGFyKCk7fSBpZiAobmVnKSBhID0gLWE7fSBpbmxpbmUgdm9pZCBvdXQoaW50IGEpIHtpZiAoIWEpIHB1dGNoYXIoJzAnKTsgaWYgKGEgPCAwKSB7cHV0Y2hhcignLScpOyBhID0gLWE7fSBjaGFyIHNbMTBdOyBpbnQgaTsgZm9yKGkgPSAwOyBhOyArK2kpIHtzW2ldID0gJzAnICsgYSAlIDEwOyBhIC89IDEwO30gZm9yZChqLCBpKSBwdXRjaGFyKHNbal0pO30gaW5saW5lIGludCBueHQoKSB7aW4ocmV0KTsgcmV0dXJuIHJldDt9CgppbnQgbWFpbigpCnsKICAgIGluKE4pOyBpbihxKTsgaW4oTSk7CiAgICBpbnQgYVtOICsgMV07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IE47ICsraSkKICAgICAgICBhW2ldID0gbnh0KCk7CiAgICBpbnQgbG9nX04gPSAwOwoJd2hpbGUgKCgxIDw8IGxvZ19OKSA8IE4pCgkgICAgbG9nX04rKzsKICAgIGludCBhbnNbTiArIDFdW2xvZ19OICsgMV07Cglmb3IoaW50IGkgPSAwOyBpIDw9IGxvZ19OOyArK2kpCgkJYW5zWzBdW2ldID0gMTsKCWludCBpID0gMTsKCWludCBzdW0gPSAwOwoJZm9yKGludCBqID0gMTsgaiA8PSBOOyArK2opCgl7CgkJc3VtICs9IGFbal07CgkJd2hpbGUoc3VtID4gTSkKCQkJc3VtIC09IGFbaSsrXTsKCQlhbnNbal1bMF0gPSBpOwoJCWZvcihpbnQgbCA9IDE7IGwgPD0gbG9nX047ICsrbCkKCQkJYW5zW2pdW2xdID0gYW5zW2Fuc1tqXVtsIC0gMV0gLSAxXVtsIC0gMV07Cgl9Cgl3aGlsZShxLS0pCgl7CgkgICAgaW4odSk7IGluKHYpOwoJICAgIGludCBwID0gMDsKCSAgICBpZiAodiA+PSB1KQoJICAgIHsKCSAgICAgICAgcHV0cygiMSIpOwoJICAgICAgICBjb250aW51ZTsKCSAgICB9CgkgICAgd2hpbGUodikKCSAgICB7CgkgICAgICAgIGlmICh2ICYgMSkKCSAgICAgICAgICAgIHUgPSBhbnNbdV1bcF0gLSAxOwoJICAgICAgICArK3A7CgkgICAgICAgIHYgPj49IDE7CgkgICAgfQoJICAgIG91dCh1ICsgMSk7CgkgICAgcHV0cygiIik7Cgl9CglyZXR1cm4gMDsKfQo=