小 Y ist Student und beschäftigt sich zurzeit mit Problemen über Zeichenketten.
小 Y hat die folgenden Definitionen kennengelernt:
- Für eine Zeichenkette $s[1:n]$ der Länge $n$ definieren wir die Teilzeichenkette $s[l:r]$ mit $1\le l\le r\le n$ als die Zeichenkette, die durch Aneinanderhängen von $s[l],s[l+1],\ldots,s[r]$ in dieser Reihenfolge entsteht.
- Für eine Zeichenkette $s[1:n]$ der Länge $n$ ist ihre Umkehrung $R(s)$ die Zeichenkette, die durch Aneinanderhängen von $s[n],s[n-1],\ldots,s[1]$ entsteht, also durch Umkehren der Zeichenreihenfolge.
- Für zwei Zeichenketten $a[1:n],b[1:n]$ gleicher Länge $n$ ist $a$ genau dann lexikografisch kleiner als $b$, wenn ein $1\le i\le n$ existiert, sodass für alle $1\le j<i$ die Gleichheit $a[j]=b[j]$ gilt und zugleich $a[i]<b[i]$.
Nach diesen Definitionen ist 小 Y auf das folgende Problem gekommen:
Gegeben ist eine Zeichenkette $s[1:n]$ der Länge $n$. Es gibt $q$ Anfragen, von denen jede zwei Parameter $i,r$ angibt. Du sollst bestimmen, wie viele Werte $l$ die folgenden Bedingungen erfüllen:
- $1\le l\le r$.
- $s[i:i+l-1]$ ist lexikografisch kleiner als $R(s[i+l:i+2l-1])$.
小 Y bittet dich, ihm bei diesem Problem zu helfen.
Eingabe
Lies die Daten aus der Datei string.in.
Diese Aufgabe enthält mehrere Testfälle.
Die erste Zeile der Eingabe enthält zwei ganze Zahlen $c,t$: die Testfallnummer und die Anzahl der Testfälle. $c=0$ bedeutet, dass es sich um ein Beispiel handelt.
Anschließend werden die Testfälle der Reihe nach eingegeben. Für jeden Testfall gilt:
Die erste Zeile enthält zwei positive ganze Zahlen $n,q$, die Länge der Zeichenkette und die Anzahl der Anfragen.
Die zweite Zeile enthält eine Zeichenkette $s$ der Länge $n$, die nur aus Kleinbuchstaben besteht.
Die folgenden $q$ Zeilen enthalten jeweils zwei positive ganze Zahlen $i,r$, die eine Anfrage angeben. Es ist garantiert, dass $i+2r-1\le n$ gilt.
Ausgabe
Schreibe die Ausgabe in die Datei string.out.
Gib für jede Anfrage jedes Testfalls eine Zeile mit einer ganzen Zahl aus: der Anzahl der Werte $l$, die die Bedingungen erfüllen.
Beispiele
Eingabe 1
0 2 9 3 abacababa 1 4 2 4 3 3 9 3 abaabaaba 1 4 2 4 3 3
Ausgabe 1
4 0 3 2 0 2
Hinweis zu Beispiel 1
Für die erste Anfrage des ersten Testfalls gilt:
- Für $l=1$: $s[i:i+l-1]=\mathrm{a}$, $R(s[i+l:i+l+l-1])=\mathrm{b}$.
- Für $l=2$: $s[i:i+l-1]=\mathrm{ab}$, $R(s[i+l:i+l+l-1])=\mathrm{ca}$.
- Für $l=3$: $s[i:i+l-1]=\mathrm{aba}$, $R(s[i+l:i+l+l-1])=\mathrm{bac}$.
- Für $l=4$: $s[i:i+l-1]=\mathrm{abac}$, $R(s[i+l:i+l+l-1])=\mathrm{baba}$.
In allen vier Fällen ist $s[i:i+l-1]$ lexikografisch kleiner als $R(s[i+l:i+2l-1])$. Daher ist die Antwort $4$.
Beispiel 2
Siehe string/string2.in und string/string2.ans im Teilnehmerverzeichnis.
Der Wertebereich dieses Beispiels erfüllt die Beschränkungen von Testfall $5$.
Beispiel 3
Siehe string/string3.in und string/string3.ans im Teilnehmerverzeichnis.
Beispiel 4
Siehe string/string4.in und string/string4.ans im Teilnehmerverzeichnis.
Der Wertebereich dieses Beispiels erfüllt die Beschränkungen der Testfälle $24\sim25$.
Beschränkungen
Für alle Testdaten gilt garantiert $1\le t\le5$, $1\le n\le10^5$, $1\le q\le10^5$, $1\le i+2r-1\le n$. Die Zeichenkette $s$ enthält nur Kleinbuchstaben.
| Testfallnummer | $n$ | $q$ | Besondere Eigenschaft |
|---|---|---|---|
| $1$ | $\le 5$ | $\le 5$ | A |
| $2$ | $\le 10$ | $\le 10$ | A |
| $3$ | $\le 20$ | $\le 20$ | A |
| $4$ | $\le 50$ | $\le 50$ | A |
| $5$ | $\le 10^2$ | $\le 10^2$ | A |
| $6$ | $\le 10^3$ | $\le 10^3$ | Keine |
| $7$ | $\le 2\,000$ | $\le 2\,000$ | Keine |
| $8$ | $\le 3\,000$ | $\le 3\,000$ | Keine |
| $9$ | $\le 4\,000$ | $\le 4\,000$ | Keine |
| $10$ | $\le 23\,333$ | $\le 23\,333$ | A |
| $11$ | $\le 5\times10^4$ | $\le 5\times10^4$ | A |
| $12$ | $\le 75\,000$ | $\le 75\,000$ | A |
| $13$ | $\le 9\times10^4$ | $\le 9\times10^4$ | A |
| $14$ | $\le 10^5$ | $\le 10^5$ | A |
| $15$ | $\le 23\,333$ | $\le 23\,333$ | B |
| $16$ | $\le 75\,000$ | $\le 75\,000$ | B |
| $17$ | $\le 9\times10^4$ | $\le 9\times10^4$ | B |
| $18$ | $\le 10^5$ | $\le 10^5$ | B |
| $19$ | $\le 23\,333$ | $\le 23\,333$ | Keine |
| $20$ | $\le 5\times10^4$ | $\le 5\times10^4$ | Keine |
| $21$ | $\le 75\,000$ | $\le 75\,000$ | Keine |
| $22$ | $\le 9\times10^4$ | $\le 9\times10^4$ | Keine |
| $23$ | $\le 95\,000$ | $\le 95\,000$ | Keine |
| $24$ | $\le 10^5$ | $\le 10^5$ | Keine |
| $25$ | $\le 10^5$ | $\le 10^5$ | Keine |
- Besondere Eigenschaft A: Die Zeichenkette enthält garantiert nur die Zeichen
aundb. Jedes Zeichen wird unabhängig und mit gleicher Wahrscheinlichkeit ausaundbgewählt. - Besondere Eigenschaft B: Benachbarte Zeichen der Zeichenkette sind garantiert verschieden.