#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using ld = long double;
#define all(x) x.begin(),x.end()
#define v(x) vector<x>
#define nl '\n'
#define fxd(x) fixed << setprecision(x)
template<class t> using ordered_set = tree<t, null_type, less<t>, rb_tree_tag, tree_order_statistics_node_update>;
template<class t> using ordered_multiset = tree<t, null_type, less_equal<t>, rb_tree_tag, tree_order_statistics_node_update>;
ll extGCD(ll a, ll b, ll &x, ll &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
ll x1, y1;
ll d = extGCD(b, a % b, x1, y1);
x = y1;
y = x1 - y1 * (a / b);
return d;
}
ll modInverse(ll A, ll M) {
ll x, y;
ll g = extGCD(A, M, x, y);
if (g != 1) {
return -1;
}
else {
return (x % M + M) % M;
}
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
ll n , m; cin >> n >> m;
ll minv = modInverse(n,m);
if(minv == -1)
{
cout << "No such integer exists.";
}
else
{
cout << minv;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIGxkID0gbG9uZyBkb3VibGU7CgojZGVmaW5lIGFsbCh4KSAgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSB2KHgpIHZlY3Rvcjx4PgojZGVmaW5lIG5sICdcbicKI2RlZmluZSBmeGQoeCkgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKHgpCnRlbXBsYXRlPGNsYXNzIHQ+IHVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTx0LCBudWxsX3R5cGUsIGxlc3M8dD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+Owp0ZW1wbGF0ZTxjbGFzcyB0PiB1c2luZyBvcmRlcmVkX211bHRpc2V0ID0gdHJlZTx0LCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8dD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwoKCmxsIGV4dEdDRChsbCBhLCBsbCBiLCBsbCAmeCwgbGwgJnkpIHsKICAgIGlmIChiID09IDApIHsKICAgICAgICB4ID0gMTsKICAgICAgICB5ID0gMDsKICAgICAgICByZXR1cm4gYTsKICAgIH0KICAgIGxsIHgxLCB5MTsKICAgIGxsIGQgPSBleHRHQ0QoYiwgYSAlIGIsIHgxLCB5MSk7CiAgICB4ID0geTE7CiAgICB5ID0geDEgLSB5MSAqIChhIC8gYik7CiAgICByZXR1cm4gZDsKfQoKbGwgbW9kSW52ZXJzZShsbCBBLCBsbCBNKSB7CiAgICBsbCB4LCB5OwogICAgbGwgZyA9IGV4dEdDRChBLCBNLCB4LCB5KTsKICAgIAogICAgaWYgKGcgIT0gMSkgewogICAgICAgIHJldHVybiAtMTsKICAgIH0gCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gKHggJSBNICsgTSkgJSBNOwogICAgfQp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwogICAgbGwgbiAsIG07IGNpbiA+PiBuID4+IG07CiAgICBsbCBtaW52ID0gbW9kSW52ZXJzZShuLG0pOwogICAgaWYobWludiA9PSAtMSkKICAgIHsKICAgICAgICBjb3V0IDw8ICJObyBzdWNoIGludGVnZXIgZXhpc3RzLiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgY291dCA8PCBtaW52OwogICAgfQp9