#include <iostream>
int primes_all[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};
const int N_max = 85;
typedef long long ways;
ways ways_to_reach_N[N_max + 1] = { 1 };
int main()
{
// find all paths
for( int i = 0; i <= N_max; ++i ) {
ways ways_to_reach_i = ways_to_reach_N[i];
if (ways_to_reach_i) {
for( int* p = primes_all; *p <= N_max - i && p < (&primes_all)[1]; ++p ) {
ways_to_reach_N[i + *p] += ways_to_reach_i;
}
}
}
// eliminate single-step paths
for( int* p = primes_all; *p <= N_max && p < (&primes_all)[1]; ++p ) {
--ways_to_reach_N[*p];
}
// print results
for( int i = 1; i <= N_max; ++i ) {
ways ways_to_reach_i = ways_to_reach_N[i];
if (ways_to_reach_i) {
std::cout << i << " -- " << ways_to_reach_i << std::endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IHByaW1lc19hbGxbXSA9IHsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzcsIDQxLCA0MywgNDcsIDUzLCA1OSwgNjEsIDY3LCA3MSwgNzMsIDc5LCA4MywgODksIDk3fTsKCmNvbnN0IGludCBOX21heCA9IDg1Owp0eXBlZGVmIGxvbmcgbG9uZyB3YXlzOwp3YXlzIHdheXNfdG9fcmVhY2hfTltOX21heCArIDFdID0geyAxIH07CgppbnQgbWFpbigpCnsKICAgIC8vIGZpbmQgYWxsIHBhdGhzCiAgICBmb3IoIGludCBpID0gMDsgaSA8PSBOX21heDsgKytpICkgewogICAgICAgIHdheXMgd2F5c190b19yZWFjaF9pID0gd2F5c190b19yZWFjaF9OW2ldOwogICAgICAgIAogICAgICAgIGlmICh3YXlzX3RvX3JlYWNoX2kpIHsKICAgICAgICAgICAgZm9yKCBpbnQqIHAgPSBwcmltZXNfYWxsOyAqcCA8PSBOX21heCAtIGkgJiYgcCA8ICgmcHJpbWVzX2FsbClbMV07ICsrcCApIHsKICAgICAgICAgICAgICAgIHdheXNfdG9fcmVhY2hfTltpICsgKnBdICs9IHdheXNfdG9fcmVhY2hfaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBlbGltaW5hdGUgc2luZ2xlLXN0ZXAgcGF0aHMKICAgIGZvciggaW50KiBwID0gcHJpbWVzX2FsbDsgKnAgPD0gTl9tYXggJiYgcCA8ICgmcHJpbWVzX2FsbClbMV07ICsrcCApIHsKICAgICAgICAtLXdheXNfdG9fcmVhY2hfTlsqcF07CiAgICB9CgogICAgLy8gcHJpbnQgcmVzdWx0cwogICAgZm9yKCBpbnQgaSA9IDE7IGkgPD0gTl9tYXg7ICsraSApIHsKICAgICAgICB3YXlzIHdheXNfdG9fcmVhY2hfaSA9IHdheXNfdG9fcmVhY2hfTltpXTsKICAgICAgICAKICAgICAgICBpZiAod2F5c190b19yZWFjaF9pKSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBpIDw8ICIgLS0gIiA8PCB3YXlzX3RvX3JlYWNoX2kgPDwgc3RkOjplbmRsOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=