#include <bits/stdc++.h>
#define ll long long
using namespace std;
char s[20];
ll n,x=0,P=1,ma=-1,ans=-1;
bool used[10]={0};
void dfs(int now,ll tot){
	if (now>n){
		if (min(abs(tot-x),P-abs(tot-x))>ma){
			ma=min(abs(tot-x),P-abs(tot-x));
			ans=tot;
		}
		return ;
	}
	for (int i=0;i<10;i++){
		if (used[i]) continue;
		used[i]=1;
		dfs(now+1,tot*10+i);
		used[i]=0;
	}
}
int main(){
	scanf ("%s",s);
	n=strlen(s);
	for (int i=0;i<n;i++)
		x=x*10+s[i]-'0';
	for (int i=1;i<=n;i++) P*=10;
	dfs(1,0);
	if (ans<P/10){
		printf ("0%lld\n",ans);
		return 0;
	}
	printf ("%lld\n",ans);
	return 0;
}
### Prompt

Develop a solution in cpp to the problem described below:

Example

Input

201


Output

701

### Response

```cpp
#include <bits/stdc++.h>
#define ll long long
using namespace std;
char s[20];
ll n,x=0,P=1,ma=-1,ans=-1;
bool used[10]={0};
void dfs(int now,ll tot){
	if (now>n){
		if (min(abs(tot-x),P-abs(tot-x))>ma){
			ma=min(abs(tot-x),P-abs(tot-x));
			ans=tot;
		}
		return ;
	}
	for (int i=0;i<10;i++){
		if (used[i]) continue;
		used[i]=1;
		dfs(now+1,tot*10+i);
		used[i]=0;
	}
}
int main(){
	scanf ("%s",s);
	n=strlen(s);
	for (int i=0;i<n;i++)
		x=x*10+s[i]-'0';
	for (int i=1;i<=n;i++) P*=10;
	dfs(1,0);
	if (ans<P/10){
		printf ("0%lld\n",ans);
		return 0;
	}
	printf ("%lld\n",ans);
	return 0;
}
```