小红的数组移动
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红站在一个数组的第一个位置,她会进行以下移动方式:
左指令:如果小红在第一个元素,则不动;否则向左移动一步。
右指令:如果小红在最后一个元素,则不动;否则向右移动一步。
每当小红执行了移动指令后(无论其位置是否移动),都会获得当前元素的分数。现在小红执行一个给定的指令集,请问她最终获得了多少分?

输入描述:

第一行输入一个正整数n,代表数组的长度。
第二行输入n个正整数a_i,代表数组的元素。
接下来的一行输入一个长度不超过10^5的、仅由'L'和'R'组成的字符串,代表指令集。'L'代表向左,'R'代表向右。
1\leq n \leq 10^5
1\leq a_i \leq 10^9

输出描述:

一个整数,代表小红最终获得的分数。由于答案可能过大,请对10^9+7取模。
示例1

输入

复制
5
1 2 3 4 5
RRRL

输出

复制
12

说明

小红最终指令的操作为:"RRRL",因此答案是2+3+4+3=12