#include <bits/stdc++.h>
using namespace std ;
#define ll long long
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fir first
#define sec second
#define pill pair < ll , ll >
#define FOR( i , a , b ) for (ll i = (a) , _b = (b) ; i <= _b ; i ++ )
#define FORR( i , a , b ,c ) for (ll i = (a) , _b = (b) ; i <= _b ; i +=(c) )
#define pb push_back
#define str string
#define ALL(a) (a).begin() , (a).end()
#define rep( i , a , b) for (ll i = (a) ; i < (b) ; i ++ )
#define ld long double
const ll maxn = 1e3;
#define debug 0
#define oo (ll)(1e18)
bool check_nt[85] ;
int NT[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83 } ;
bool nt ( ll n ) {
return check_nt[n] ;
}
bool check( ll s){
str k = to_string(s );
ll d = 0 ;
for (auto x : k)
{
d += x -'0' ;
}
return (nt(d)) ;
}
str L , R ;
ll l , r , k ;
bitset<10000> f[13][3][3][85] ;
bool ok = 0 ;
str ans_1 ;
void dfs ( int i , int ok_l , int ok_r , int sum , int du , str ans , int n ){
// cerr << i << ' ' << ok_l << ' ' << ok_r << ' ' << sum << ' ' << du << ' ' << ans << '\n' ;
// cout << ans << '\n' ;
if ( ok ) return ;
if (f[i][ok_l][ok_r][sum][du]) return ;
f[i][ok_l][ok_r][sum][du] = 1 ;
if ( i > n - 1) {
// cout << ok_l << ' ' << ok_r << '\n' ;
if (check_nt[sum] && du == 0 ) {
// ok = 1 ;
int run = 0;
while ( (run + 1 )< ans.size() && ans[run] == '0' ) run ++ ;
str comPare = ans.substr ( run ) ;
if ( comPare < ans_1) ans_1 = comPare ;
// cout << ans << '\n' ;
return ;
}
// cout << ans << '\n' ;
return ;
}
else {
int low = ok_l ? ( '0' ) : L[i] ;
int high= ok_r ? ( '9' ) : R[i];
low = max ( low , (( i == 0 ) ? 49 : 48 )) ;
// cout << i << ' ' << low << ' ' << (char)high << ' ' << ok_l << ' ' << ok_r << '\n' ;
for ( int c = low ; c <= high ; c ++ ) {
// cout << c << ' ' << c - '0' << '\n' ;
dfs ( i + 1 , (ok_l | ( c > L[i])) , (ok_r | ( c < R[i])) , sum + c - '0' , (du * 10 + c - '0' ) %k , ans + char(c),n );
}
}
}
#define name "TASK"
int main(){
fast
if(fopen(name".INP","r")) {
freopen (name".INP","r",stdin);
freopen (name".OUT","w",stdout);
}
for (int i = 0 ; i < 23 ; i ++ )
check_nt[NT[i]] = 1 ;
while ( cin >> l >> r >> k ) {
ok = 0 ;
ans_1 = "9999999999999999999999999999999" ;
if ( k > 1e4 ){
bool c = 1 ;
ll minest = l + ( k - ( l % k ) ) ;
// cout << minest << '\n' ;
vector < str > ans ;
FORR ( i , minest , r , k ) {
if ( i % k == 0 ) {
if (check(i)) {
c = 0 ;
ans.pb(to_string(i)) ;
// cout << i << '\n' ;
// break ;
}
}
}
sort ( ALL(ans) ,[&] ( str a , str b ) {
return a < b ;
}) ;
if(c)cout << -1 << '\n' ;
else cout <<ans[0] << '\n' ;
}
else {
L = to_string ( l );
// 0999999999
// while ( L.size() <= 10 ) L = "0" + L ;
R = to_string ( r );
// while ( R.size() <= 10 ) R = "0" + R ;
// cerr << L << ' ' << R << '\n' ;
str OLD_L = L ;
FOR ( i , L.size() , R.size()) {
for (int i = 0; i < 13; ++i)
for (int j = 0; j < 3; ++j)
for (int k = 0; k < 3; ++k)
for (int l = 0; l < 85; ++l)
f[i][j][k][l].reset();
L = OLD_L ;
while ( L.size() < R.size() ) L = "0" + L ;
dfs ( 0 , 0 , 0 , 0 , 0 , "" , i ) ;
}
if (ans_1 == "9999999999999999999999999999999") cout << -1 << '\n' ;
else cout << ans_1 << '\n' ;
}
}
cerr << "\nTIME: = " << (1.0*clock())/CLOCKS_PER_SEC << '\n';
return(0) ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQgOyAKCgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGZpciBmaXJzdCAKI2RlZmluZSBzZWMgc2Vjb25kIAojZGVmaW5lIHBpbGwgcGFpciA8IGxsICwgbGwgPgojZGVmaW5lIEZPUiggaSAsIGEgLCBiICkgZm9yIChsbCBpID0gKGEpICwgX2IgPSAoYikgOyBpIDw9IF9iIDsgaSArKyApICAKI2RlZmluZSBGT1JSKCBpICwgYSAsIGIgLGMgKSBmb3IgKGxsIGkgPSAoYSkgLCBfYiA9IChiKSA7IGkgPD0gX2IgOyBpICs9KGMpICkgIAojZGVmaW5lIHBiIHB1c2hfYmFjayAKI2RlZmluZSBzdHIgc3RyaW5nIAojZGVmaW5lIEFMTChhKSAoYSkuYmVnaW4oKSAsIChhKS5lbmQoKSAKI2RlZmluZSByZXAoIGkgLCBhICwgYikgZm9yIChsbCBpID0gKGEpIDsgaSA8IChiKSA7IGkgKysgKQojZGVmaW5lIGxkIGxvbmcgZG91YmxlCmNvbnN0IGxsIG1heG4gPSAxZTM7CiNkZWZpbmUgZGVidWcgMAojZGVmaW5lIG9vIChsbCkoMWUxOCkKYm9vbCBjaGVja19udFs4NV0gOwppbnQgTlRbXSA9IHsgMiwgMywgNSwgNywgMTEsIDEzLCAxNywgMTksIDIzLCAyOSwgMzEsIDM3LCA0MSwgNDMsIDQ3LCA1MywgNTksIDYxLCA2NywgNzEsIDczLCA3OSwgODMgfSA7CmJvb2wgbnQgKCBsbCBuICkgewoKCXJldHVybiBjaGVja19udFtuXSA7Cn0KYm9vbCBjaGVjayggbGwgcyl7CglzdHIgayA9IHRvX3N0cmluZyhzICk7CglsbCBkID0gMCA7IAoJZm9yIChhdXRvIHggOiBrKSAKCXsKCQlkICs9IHggLScwJyA7Cgl9CglyZXR1cm4gKG50KGQpKSA7Cn0KCnN0ciBMICwgUiA7CgpsbCBsICwgciAsIGsgOwkKYml0c2V0PDEwMDAwPiBmWzEzXVszXVszXVs4NV0gOwpib29sIG9rID0gMCA7CnN0ciBhbnNfMSA7CnZvaWQgZGZzICggaW50IGkgLCBpbnQgb2tfbCAsIGludCBva19yICwgaW50IHN1bSAsIGludCBkdSAsIHN0ciBhbnMgICwgaW50IG4gKXsKCS8vIGNlcnIgPDwgaSA8PCAnICcgPDwgb2tfbCA8PCAnICcgPDwgb2tfciA8PCAnICcgPDwgc3VtIDw8ICcgJyA8PCBkdSA8PCAnICcgPDwgYW5zIDw8ICdcbicgOwoJLy8gY291dCA8PCBhbnMgPDwgJ1xuJyA7CglpZiAoIG9rICkgcmV0dXJuIDsKCWlmIChmW2ldW29rX2xdW29rX3JdW3N1bV1bZHVdKSByZXR1cm4gOwoJZltpXVtva19sXVtva19yXVtzdW1dW2R1XSA9IDEgOwoJaWYgKCBpID4gbiAtIDEpIHsKCQkvLyBjb3V0IDw8IG9rX2wgPDwgJyAnIDw8IG9rX3IgPDwgJ1xuJyA7CgkJaWYgKGNoZWNrX250W3N1bV0gJiYgZHUgPT0gMCApIHsKCQkJLy8gb2sgPSAxIDsKCQkJaW50IHJ1biA9IDA7CgkJCXdoaWxlICggKHJ1biArIDEgKTwgYW5zLnNpemUoKSAmJiBhbnNbcnVuXSA9PSAnMCcgKSBydW4gKysgOwoKCQkJc3RyIGNvbVBhcmUgPSBhbnMuc3Vic3RyICggcnVuICkgOwoKCQkJaWYgKCBjb21QYXJlIDwgYW5zXzEpIGFuc18xID0gY29tUGFyZSA7CgkJCS8vIGNvdXQgPDwgYW5zIDw8ICdcbicgOwoJCQlyZXR1cm4gOwoJCX0KCQkJLy8gY291dCA8PCBhbnMgPDwgJ1xuJyA7CgkJcmV0dXJuIDsKCX0KCWVsc2UgewoKCQlpbnQgbG93ID0gb2tfbCA/ICggJzAnICkgOiBMW2ldIDsKCQlpbnQgaGlnaD0gb2tfciA/ICggJzknICkgOiBSW2ldOwoJCWxvdyA9IG1heCAoIGxvdyAsICgoIGkgPT0gMCApID8gNDkgOiA0OCApKSA7CgkJLy8gY291dCA8PCBpIDw8ICcgJyA8PCBsb3cgPDwgJyAnIDw8IChjaGFyKWhpZ2ggPDwgJyAnIDw8IG9rX2wgPDwgJyAnIDw8IG9rX3IgPDwgJ1xuJyA7CgkJZm9yICggaW50IGMgPSBsb3cgOyBjIDw9IGhpZ2ggOyBjICsrICkgewoJCQoJCQkvLyBjb3V0IDw8IGMgPDwgJyAnIDw8IGMgLSAnMCcgPDwgJ1xuJyA7CgkJCQoKCQkJZGZzICggaSArIDEgLCAob2tfbCB8ICggYyA+IExbaV0pKSAsIChva19yIHwgKCBjIDwgUltpXSkpICwgc3VtICsgYyAtICcwJyAsIChkdSAqIDEwICsgYyAtICcwJyApICVrICwgYW5zICsgY2hhcihjKSxuICk7IAoJCX0KCX0KfQojZGVmaW5lIG5hbWUgIlRBU0siIAppbnQgbWFpbigpewogICAgZmFzdCAKICAgIGlmKGZvcGVuKG5hbWUiLklOUCIsInIiKSkgewogICAgICAgIGZyZW9wZW4gKG5hbWUiLklOUCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuIChuYW1lIi5PVVQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgMjMgOyBpICsrICkKICAgIAljaGVja19udFtOVFtpXV0gPSAxIDsKICAgIHdoaWxlICggY2luID4+IGwgPj4gciA+PiBrICkgewogICAgCW9rID0gMCA7CiAgICAJYW5zXzEgPSAiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIgOwogICAgCWlmICggayA+IDFlNCApewoKCSAgICAJYm9vbCBjID0gMSA7CgkJCWxsIG1pbmVzdCA9IGwgKyAoIGsgLSAoIGwgJSBrICkgKSA7CgkJCS8vIGNvdXQgPDwgbWluZXN0IDw8ICdcbicgOwoJCQl2ZWN0b3IgPCBzdHIgPiBhbnMgOwoKCQkJRk9SUiAoIGkgLCBtaW5lc3QgLCByICwgayApIHsKCQkJCWlmICggaSAlIGsgPT0gMCApIHsKCQkJCQlpZiAoY2hlY2soaSkpIHsKCQkJCQkJYyA9IDAgOwoJCQkJCQlhbnMucGIodG9fc3RyaW5nKGkpKSA7CgkJCQkJCS8vIGNvdXQgPDwgaSA8PCAnXG4nIDsgCgkJCQkJCS8vIGJyZWFrIDsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJc29ydCAoIEFMTChhbnMpICxbJl0gKCBzdHIgYSAsIHN0ciBiICkgewoJCQkJcmV0dXJuIGEgPCBiIDsKCQkJfSkgOwoJCQlpZihjKWNvdXQgPDwgLTEgPDwgJ1xuJyA7CgkJCWVsc2UgY291dCA8PGFuc1swXSA8PCAnXG4nIDsKICAgIAl9CiAgICAJZWxzZSB7CiAgICAJCQogICAgCQlMID0gdG9fc3RyaW5nICggbCApOyAKICAgIAkJLy8gMDk5OTk5OTk5OQogICAgCQkvLyB3aGlsZSAoIEwuc2l6ZSgpIDw9IDEwICkgTCA9ICIwIiArIEwgOwogICAgCQlSID0gdG9fc3RyaW5nICggciApOyAKICAgIAkJLy8gd2hpbGUgKCBSLnNpemUoKSA8PSAxMCApIFIgPSAiMCIgKyBSIDsKICAgIAkJLy8gY2VyciA8PCBMIDw8ICcgJyA8PCBSIDw8ICdcbicgOwogICAgCQlzdHIgT0xEX0wgPSBMIDsKICAgIAkJRk9SICggaSAsIEwuc2l6ZSgpICwgUi5zaXplKCkpIHsKICAgIAkJCWZvciAoaW50IGkgPSAwOyBpIDwgMTM7ICsraSkKICAgCQkgCQlmb3IgKGludCBqID0gMDsgaiA8IDM7ICsraikKICAgICAgICAJCQlmb3IgKGludCBrID0gMDsgayA8IDM7ICsraykKICAgICAgICAgICAgCQkJZm9yIChpbnQgbCA9IDA7IGwgPCA4NTsgKytsKQogICAgICAgICAgICAgICAJCQkJZltpXVtqXVtrXVtsXS5yZXNldCgpOwogICAgCQkJTCA9IE9MRF9MIDsKICAgIAkJCXdoaWxlICggTC5zaXplKCkgPCBSLnNpemUoKSApIEwgPSAiMCIgKyBMIDsKICAgIAkJCWRmcyAoIDAgLCAwICwgMCAsIDAgLCAwICwgIiIgLCBpICkgOwogICAgCQl9CgogICAgCQlpZiAoYW5zXzEgPT0gIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiKSBjb3V0IDw8IC0xIDw8ICdcbicgOyAKCQkJZWxzZSBjb3V0IDw8IGFuc18xIDw8ICdcbicgOwogICAgCQogICAgCX0KICAgIAkKCgl9CiAgICBjZXJyIDw8ICJcblRJTUU6ID0gIiA8PCAoMS4wKmNsb2NrKCkpL0NMT0NLU19QRVJfU0VDIDw8ICdcbic7CiAgICByZXR1cm4oMCkgOwp9