Petya once wrote a sad love song and shared it to Vasya. The song is a string consisting of lowercase English letters. Vasya made up qq questions about this song. Each question is about a subsegment of the song starting from the ll-th letter to the rr-th letter. Vasya considers a substring made up from characters on this segment and repeats each letter in the subsegment kk times, where kk is the index of the corresponding letter in the alphabet. For example, if the question is about the substring "abbcb", then Vasya repeats letter 'a' once, each of the letters 'b' twice, letter 'c" three times, so that the resulting string is "abbbbcccbb", its length is 1010. Vasya is interested about the length of the resulting string.
Help Petya find the length of each string obtained by Vasya.
Input
The first line contains two integers nn and qq (1≤n≤1000001≤n≤100000, 1≤q≤1000001≤q≤100000) — the length of the song and the number of questions.
The second line contains one string ss — the song, consisting of nn lowercase letters of English letters.
Vasya's questions are contained in the next qq lines. Each line contains two integers ll and rr (1≤l≤r≤n1≤l≤r≤n) — the bounds of the question.
Output
Print qq lines: for each question print the length of the string obtained by Vasya.
Examples
input
7 3
abacaba
1 3
2 5
1 7
output
4 7 11
input
13 7 sonoshikumiwo 1 5 2 10 7 7 1 13 4 8 2 5 3 9
output
82 125 9 191 62 63 97
题目大意:将字符串中的字符重复特定次数后输出字符串长度,以题可知a重复一次,b两次,c三次……(并不是第几个出现就重复几次)
思路:应用前缀和,通过ascii码计算次数
#include<iostream>
using namespace std;
const int N = 100010;
string a;
int n, q, c, b;
int arr[N];
int main()
{
cin >> n >> q;
cin >> a;
for(int i = 0; i < n; i ++)
{
arr[i] = arr[i - 1] + (a[i] - 'a' + 1);
}
while(q --)
{
cin >> c >> b;
cout << arr[b - 1] - arr[c - 2] << endl;
//因打表时下标从0开始
}
return 0;
}