#include<bits/stdc++.h>
using namespace std;
/*long long pot(long long x,long long m)
{
long long a = 1;
for(long long i = 0;i < m-2;++i)
{
a *= x;
a %= m;
}
return a;
}*/
long long pot(long long x,long long m,long long mod)
{
if(m==0)
return 1;
if(m%2 == 1)
return (x * pot(x, m - 1,mod))%mod;
long long w = pot(x, m/2,mod);
return (w * w)%mod;
}
long long nwd(long long a,long long b)
{
return a*b/__gcd(a,b);
}
vector<long long> dziel(long long n)
{
vector<long long> wyn;
for(long long i = 1;i*i <= n;++i)
{
if(n%i == 0)
{
wyn.push_back(i);
wyn.push_back(n/i);
//n /= i;
}
}
return wyn;
}
pair<long long,long long> best(long long n,long long m)
{
long long wyn = 1e9;
pair<long long,long long> k;
for(int i = 1;i <= n;++i)
{
if(__gcd((nwd(n,i)/i)%m,m) == 1)
{
//wyn = min(wyn,i+pot(n/i,m));
if(wyn > i+1)
{
wyn = i+1;
k = {i,1};
}
}
}
return k;
}
int main()
{
ios_base::sync_with_stdio(0);
long long n,m;
cin >> n >> m;
//cout << best(n,m).first << ' ' << best(n,m).second;
if(__gcd(n,m) == 1 || __gcd(n,m) == 2)
{
cout << 2 << endl << "DP";
return 0;
}
pair<long long,long long> a = best(n,m);
if(n < a.first+a.second) a = {n-1,1};
pair<long long,long long> b = best(m,n);
if(m < b.first+b.second) b = {m-1,1};
if(a.first+a.second < b.first+b.second)
{
cout << a.first+a.second << endl;
for(long long i = 0;i < a.first;++i)
{
cout << 'D';
}
for(long long i = 0;i < a.second;++i)
{
cout << 'P';
}
}
else
{
cout << b.first+b.second << endl;
for(long long i = 0;i < b.first;++i)
{
cout << 'P';
}
for(long long i = 0;i < b.second;++i)
{
cout << 'D';
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8qbG9uZyBsb25nIHBvdChsb25nIGxvbmcgeCxsb25nIGxvbmcgbSkKewoJbG9uZyBsb25nIGEgPSAxOwoJZm9yKGxvbmcgbG9uZyBpID0gMDtpIDwgbS0yOysraSkKCXsKCQlhICo9IHg7CgkJYSAlPSBtOwoJfQoJcmV0dXJuIGE7Cn0qLwoKbG9uZyBsb25nIHBvdChsb25nIGxvbmcgeCxsb25nIGxvbmcgbSxsb25nIGxvbmcgbW9kKQp7CglpZihtPT0wKQoJCXJldHVybiAxOwoJaWYobSUyID09IDEpCgkJcmV0dXJuICh4ICogcG90KHgsIG0gLSAxLG1vZCkpJW1vZDsKCWxvbmcgbG9uZyB3ID0gcG90KHgsIG0vMixtb2QpOyAKCXJldHVybiAodyAqIHcpJW1vZDsKfQoKbG9uZyBsb25nIG53ZChsb25nIGxvbmcgYSxsb25nIGxvbmcgYikKewoJcmV0dXJuIGEqYi9fX2djZChhLGIpOwp9Cgp2ZWN0b3I8bG9uZyBsb25nPiBkemllbChsb25nIGxvbmcgbikKewoJdmVjdG9yPGxvbmcgbG9uZz4gd3luOwoJZm9yKGxvbmcgbG9uZyBpID0gMTtpKmkgPD0gbjsrK2kpCgl7CgkJaWYobiVpID09IDApCgkJewoJCQl3eW4ucHVzaF9iYWNrKGkpOwoJCQl3eW4ucHVzaF9iYWNrKG4vaSk7CgkJCS8vbiAvPSBpOwoJCX0KCX0KCXJldHVybiB3eW47Cn0KCnBhaXI8bG9uZyBsb25nLGxvbmcgbG9uZz4gYmVzdChsb25nIGxvbmcgbixsb25nIGxvbmcgbSkKewoJbG9uZyBsb25nIHd5biA9IDFlOTsKCXBhaXI8bG9uZyBsb25nLGxvbmcgbG9uZz4gazsKCWZvcihpbnQgaSA9IDE7aSA8PSBuOysraSkKCXsKCQlpZihfX2djZCgobndkKG4saSkvaSklbSxtKSA9PSAxKQoJCXsKCQkJLy93eW4gPSBtaW4od3luLGkrcG90KG4vaSxtKSk7CgkJCWlmKHd5biA+IGkrMSkKCQkJewoJCQkJd3luID0gIGkrMTsKCQkJCWsgPSB7aSwxfTsKCQkJfQoJCX0KCX0KCXJldHVybiBrOwp9CgppbnQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Cglsb25nIGxvbmcgbixtOwoJY2luID4+IG4gPj4gbTsKCS8vY291dCA8PCBiZXN0KG4sbSkuZmlyc3QgPDwgJyAnIDw8IGJlc3QobixtKS5zZWNvbmQ7CglpZihfX2djZChuLG0pID09IDEgfHwgX19nY2QobixtKSA9PSAyKQoJewoJCWNvdXQgPDwgMiA8PCBlbmRsIDw8ICJEUCI7CgkJcmV0dXJuIDA7Cgl9CglwYWlyPGxvbmcgbG9uZyxsb25nIGxvbmc+IGEgPSBiZXN0KG4sbSk7CglpZihuIDwgYS5maXJzdCthLnNlY29uZCkgYSA9IHtuLTEsMX07CglwYWlyPGxvbmcgbG9uZyxsb25nIGxvbmc+IGIgPSBiZXN0KG0sbik7CglpZihtIDwgYi5maXJzdCtiLnNlY29uZCkgYiA9IHttLTEsMX07CglpZihhLmZpcnN0K2Euc2Vjb25kICA8IGIuZmlyc3QrYi5zZWNvbmQpCgl7CgkJY291dCA8PCBhLmZpcnN0K2Euc2Vjb25kIDw8IGVuZGw7CgkJZm9yKGxvbmcgbG9uZyBpID0gMDtpIDwgYS5maXJzdDsrK2kpCgkJewoJCQljb3V0IDw8ICdEJzsKCQl9CgkJZm9yKGxvbmcgbG9uZyBpID0gMDtpIDwgYS5zZWNvbmQ7KytpKQoJCXsKCQkJY291dCA8PCAnUCc7CgkJfQoJfQoJZWxzZQoJewoJCWNvdXQgPDwgYi5maXJzdCtiLnNlY29uZCA8PCBlbmRsOwoJCWZvcihsb25nIGxvbmcgaSA9IDA7aSA8IGIuZmlyc3Q7KytpKQoJCXsKCQkJY291dCA8PCAnUCc7CgkJfQoJCWZvcihsb25nIGxvbmcgaSA9IDA7aSA8IGIuc2Vjb25kOysraSkKCQl7CgkJCWNvdXQgPDwgJ0QnOwoJCX0KCX0KfQ==