#include<bits/stdc++.h>
using namespace std;
#define lln long long int
lln a,b,ans;
lln potions[1000001];
int main()
{
int i;
string visit;
scanf("%lld %lld",&a,&b);
cin>>visit;
lln length=visit.length();
potions[0]=a;
if(visit[0]=='1') ans=(ans+potions[0]%b)%b;
for(i=1; i<length; ++i){
lln temp = potions[i-1];
potions[i]= (temp%b * temp%b)%b;
if(visit[i]=='1') ans=(ans+potions[i]%b)%b;
}
printf("%lld\n",ans%b);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbG4gbG9uZyBsb25nIGludAoKbGxuIGEsYixhbnM7CmxsbiBwb3Rpb25zWzEwMDAwMDFdOwoKaW50IG1haW4oKQp7CglpbnQgaTsKCXN0cmluZyB2aXNpdDsKCXNjYW5mKCIlbGxkICVsbGQiLCZhLCZiKTsKCWNpbj4+dmlzaXQ7CglsbG4gbGVuZ3RoPXZpc2l0Lmxlbmd0aCgpOwoJcG90aW9uc1swXT1hOwoJaWYodmlzaXRbMF09PScxJykgYW5zPShhbnMrcG90aW9uc1swXSViKSViOwoJZm9yKGk9MTsgaTxsZW5ndGg7ICsraSl7CgkJbGxuIHRlbXAgPSBwb3Rpb25zW2ktMV07CgkJcG90aW9uc1tpXT0gKHRlbXAlYiAqIHRlbXAlYiklYjsKCQlpZih2aXNpdFtpXT09JzEnKSBhbnM9KGFucytwb3Rpb25zW2ldJWIpJWI7Cgl9CglwcmludGYoIiVsbGRcbiIsYW5zJWIpOwoJCglyZXR1cm4gMDsKfQ==