You have a positive integer m and a non-negative integer s. Your task is to find the smallest and the largest of the numbers that have length m and sum of digits s. The required numbers should be non-negative integers written in the decimal base without leading zeroes.
Input
The single line of the input contains a pair of integers m, s (1 ≤ m ≤ 100, 0 ≤ s ≤ 900) — the length and the sum of the digits of the required numbers.
Output
In the output print the pair of the required non-negative integer numbers — first the minimum possible number, then — the maximum possible number. If no numbers satisfying conditions required exist, print the pair of numbers "-1 -1" (without the quotes).
Examples
input
Copy
2 15
output
Copy
69 96
input
Copy
3 0
output
Copy
-1 -1
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,t;
const int N=100005;
bool check(int x,int y){
if(y>x*9||y<1)return false;
return true;
}
int summ(string x){
int sum=0;
for(int i=0;i<x.size();i++){
sum+=x[i]-48;
}
return sum;
}
signed main(){
while(cin >> n >> m){
if(n==1&&m==0){
cout << 0 << " " << 0 << endl;
continue;
}
if(!check(n,m)){
cout << "-1 -1" << endl;
continue;
}
string s="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
string ans1=s.substr(0,n);
int p=0;
int i=n-1;
while(summ(ans1)!=m){
if(!p){
ans1[0]='1';
p=1;
}else{
if(ans1[i]=='9'){
i--;
}
ans1[i]+=1;
}
}
string ans2=s.substr(0,n);
i=0;
while(summ(ans2)!=m){
if(ans2[i]=='9'){
i++;
}
ans2[i]+=1;
}
cout << ans1 << " " << ans2 << endl;
}
return 0;
}