const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const n = parseInt(line);
let s = await readline();
s = ' ' + s + s;
const MOD = 1e9 + 7;
let ans = 0;
let sum = 0; // 表示当前i结尾的长度是n的字符串的权值
let sum0 = 0; // 表示当前窗口里0的权重和,从字符串的位置开始,第1个权重是1
let sum1 = 0; // 表示当前i结尾的长度为2~n的字符串权值和
let num0 = 0;
let num1 = 0;
for (let i = 1; i <= n; i++) {
if(s[i] === '0') {
num0 += 1;
sum0 += i;
} else {
num1 += 1;
sum1 += sum0;
sum += num0;
}
}
for (let i = n + 1; i <= n * 2; i++) {
sum1 -= sum;
sum0 -= num0;
if (s[i] === '0') {
sum -= num1;
sum0 += n;
} else {
sum1 += sum0;
sum += num0;
}
ans += sum1;
ans %= MOD;
}
console.log(ans);
}
}()