#include <iostream>
#include <utility>
#include <string>
#include <cstring>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
using namespace std;
const int mod = 1e9 + 7;
long long quickIntMultiply(long long a, int n) {
long long ans = 1;
while (n) {
if (n & 0x1) {
ans = ans * a % mod;
}
n >>= 1;
a = a * a % mod;
}
return ans;
}
long long quickMultiply(long long a, string s) {
long long ans = 1;
for (int i = int(s.size()) - 1; i >= 0; --i) {
int b = s[i] - '0';
if (b) {
ans = ans * quickIntMultiply(a, b) % mod;
}
a = quickIntMultiply(a, 10) % mod;
}
return ans;
}
int main() {
long long a = 1234;
string s = "135";
cout << quickMultiply(a, s) << endl;
}