#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define promi() ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
bool solve(int n, int p, int rqCnt) {
ll pv = p;
while (n / pv && rqCnt > 0) {
rqCnt -= n / pv;
pv *= p;
}
return rqCnt <= 0;
}
int main() {
promi();
int n, m, c, num;
bool isDiv;
while (cin >> n >> m) {
num = m;
isDiv = true;
for (int i = 2; i * i <= m && isDiv; ++i) {
c = 0;
while (m % i == 0) {
m /= i;
++c;
}
if (c > 0)
isDiv = solve(n, i, c);
}
if (m > 1 && isDiv) {
isDiv = solve(n, m, 1);
}
if (isDiv) {
cout << num << " divides " << n << "!" << "\n";
} else {
cout << num << " does not divide " << n << "!" << "\n";
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSAgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIHByb21pKCkgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7Cgpib29sIHNvbHZlKGludCBuLCBpbnQgcCwgaW50IHJxQ250KSB7CiAgICBsbCBwdiA9IHA7CiAKICAgIHdoaWxlIChuIC8gcHYgJiYgcnFDbnQgPiAwKSB7CiAgICAgICAgcnFDbnQgLT0gbiAvIHB2OwogICAgICAgIHB2ICo9IHA7CiAgICB9CiAgICByZXR1cm4gcnFDbnQgPD0gMDsKfQoKaW50IG1haW4oKSB7CiAgICBwcm9taSgpOwogICAgaW50IG4sIG0sIGMsIG51bTsKICAgIGJvb2wgaXNEaXY7CgogICAgd2hpbGUgKGNpbiA+PiBuID4+IG0pIHsKICAgICAgICBudW0gPSBtOwogICAgICAgIGlzRGl2ID0gdHJ1ZTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDw9IG0gJiYgaXNEaXY7ICsraSkgewogICAgICAgICAgICBjID0gMDsKCiAgICAgICAgICAgIHdoaWxlIChtICUgaSA9PSAwKSB7CiAgICAgICAgICAgICAgICBtIC89IGk7CiAgICAgICAgICAgICAgICArK2M7CiAgICAgICAgICAgIH0KIAogICAgICAgICAgICBpZiAoYyA+IDApCiAgICAgICAgICAgICAgICBpc0RpdiA9IHNvbHZlKG4sIGksIGMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG0gPiAxICYmIGlzRGl2KSB7CiAgICAgICAgICAgIGlzRGl2ID0gc29sdmUobiwgbSwgMSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNEaXYpIHsKICAgICAgICAgICAgY291dCA8PCBudW0gPDwgIiBkaXZpZGVzICIgPDwgbiA8PCAiISIgPDwgIlxuIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb3V0IDw8IG51bSA8PCAiIGRvZXMgbm90IGRpdmlkZSAiIDw8IG4gPDwgIiEiIDw8ICJcbiI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K