// 내 코드가 승인됐으면 좋겠어
// 나는 나쁜 짓을 하고 있음을 엄숙히 맹세합니다.
//배신하지 말고 기수가 되십시오
#include<bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace __gnu_pbds;
template<typename T>
using ordered_set=tree<T,null_type,less_equal<T>,rb_tree_tag,tree_order_statistics_node_update>;
#define ll long long
#define MAX 10e5+6
#define MAXX 10e11+6
#define pb push_back
#define mp make_pair
#define E cout<<"\n"
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define bl bool
#define MOD 1000000007
void fast() {
std:
ios_base::sync_with_stdio(0);
cin.tie(NULL);
}
ll power(ll x,ll y){
if(y==0)return 1;
ll temp =power(x,y/2)%MOD;
ll res=(temp*temp)%MOD;
if(y%2==1)res=(res*x)%MOD;
return res%MOD;
}
ll power1(ll x,ll y){
ll res=1;
while(y>0){
if(y%2==1)res=(res*x)%MOD;
x=(x*x)%MOD;
y/=2;
}
return res%MOD;
}
int main() {
fast();
ll t=1;
// cin>>t;
while(t--) {
//MMD();
ll x,y; cin>>x>>y;
cout<<power1(x,y);
}
return 0;
}
Ly8g64K0IOy9lOuTnOqwgCDsirnsnbjrkJDsnLzrqbQg7KKL6rKg7Ja0Ci8vIOuCmOuKlCDrgpjsgZwg7KeT7J2EIO2VmOqzoCDsnojsnYzsnYQg7JeE7IiZ7Z6IIOunueyEuO2VqeuLiOuLpC4KLy/rsLDsi6DtlZjsp4Ag66eQ6rOgIOq4sOyImOqwgCDrkJjsi63si5zsmKQKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPiAvLyBDb21tb24gZmlsZQojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4gLy8gSW5jbHVkaW5nIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZQp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgb3JkZXJlZF9zZXQ9dHJlZTxULG51bGxfdHlwZSxsZXNzX2VxdWFsPFQ+LHJiX3RyZWVfdGFnLHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgTUFYIDEwZTUrNgojZGVmaW5lIE1BWFggMTBlMTErNgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lICBtcCBtYWtlX3BhaXIKI2RlZmluZSBFIGNvdXQ8PCJcbiIKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSByYWxsKHgpIHgucmJlZ2luKCkseC5yZW5kKCkKI2RlZmluZSBibCAgYm9vbAojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CnZvaWQgZmFzdCgpIHsKICAgIHN0ZDoKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKE5VTEwpOwp9CmxsIHBvd2VyKGxsIHgsbGwgeSl7CiAgICBpZih5PT0wKXJldHVybiAxOwogICAgbGwgdGVtcCA9cG93ZXIoeCx5LzIpJU1PRDsKICAgIGxsIHJlcz0odGVtcCp0ZW1wKSVNT0Q7CiAgICBpZih5JTI9PTEpcmVzPShyZXMqeCklTU9EOwogICAgcmV0dXJuIHJlcyVNT0Q7Cn0KbGwgcG93ZXIxKGxsIHgsbGwgeSl7CiAgICBsbCByZXM9MTsKICAgIHdoaWxlKHk+MCl7CiAgICAgICAgaWYoeSUyPT0xKXJlcz0ocmVzKngpJU1PRDsKICAgICAgeD0oeCp4KSVNT0Q7CiAgICAgIHkvPTI7CiAgICB9CiAgICByZXR1cm4gcmVzJU1PRDsKfQppbnQgbWFpbigpIHsKICAgIGZhc3QoKTsKICAgIGxsIHQ9MTsKLy8gICAgY2luPj50OwogICAgd2hpbGUodC0tKSB7Ci8vTU1EKCk7CmxsIHgseTsgY2luPj54Pj55Owpjb3V0PDxwb3dlcjEoeCx5KTsKCiAgICB9CiAgICByZXR1cm4gMDsKfQ==