#include <iostream>
#include <cmath>
#include <set>
#include <map>
using namespace std;
map<long, int> m;
set<long> s;
// 求n!中素数p的指数。
int prime_num(long p, long n) {
int num = 0;
for (long i = p; i <= n; i *= p) {
num += n / i;
}
return num;
}
// 一个数的素数分解。
void prime_factorization(long a) {
int i;
m.clear();
s.clear();
while (a % 2 == 0) {
if (m.find(2) != m.end()) {
m[2]++;
} else {
m[2] = 1;
s.insert(2);
}
a /= 2;
}
i = 3;
while (i <= (sqrt(double(a)) + 1)) {
if (a % i == 0) {
if (m.find(i) != m.end()) {
m[i]++;
} else {
m[i] = 1;
s.insert(i);
}
a /= i;
} else {
i += 2;
}
}
if (a > 1) {
if (m.find(a) != m.end()) {
m[a]++;
} else {
m[a] = 1;
}
s.insert(a);
}
}
int main() {
long long n, M;
#ifndef ONLINE_JUDGE
freopen("10139.txt", "r", stdin);
#endif
while (cin >> n >> M) {
prime_factorization(M);
set<long>::iterator it;
int ok = 1;
for (it = s.begin(); it != s.end(); it++) {
if (prime_num(*it, n) < m[*it]) {
ok = 0;
break;
}
}
if (ok) {
cout << M << " divides " << n << "!" << endl;
} else {
cout << M << " does not divide " << n << "!" << endl;
}
}
return 0;
}