#include <string>
#include <vector>
#include <iostream>
using namespace std;
int n, vis[11]; long long z, p; string s;
long long rec(long long x, int d) {
	if(d == n) return x;
	long long ret = -1, sa = -1;
	for(int i = 0; i <= 9; i++) {
		if(!vis[i]) {
			vis[i] = 1;
			long long res = rec(x * 10 + i, d + 1);
			long long d1 = abs(res - z);
			long long d2 = min(d1, p - d1);
			if(sa < d2) {
				ret = res;
				sa = d2;
			}
			vis[i] = 0;
		}
	}
	return ret;
}
int main() {
	cin >> s;
	n = s.size(); p = 1;
	for(int i = 0; i < n; i++) {
		z = z * 10 + s[i] - 48;
		p *= 10;
	}
	long long ret = rec(0, 0);
	for(int i = 0; i < n; i++) {
		p /= 10;
		cout << (ret / p) % 10;
	}
	cout << endl;
	return 0;
}
### Prompt

Develop a solution in cpp to the problem described below:

Example

Input

201


Output

701

### Response

```cpp
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int n, vis[11]; long long z, p; string s;
long long rec(long long x, int d) {
	if(d == n) return x;
	long long ret = -1, sa = -1;
	for(int i = 0; i <= 9; i++) {
		if(!vis[i]) {
			vis[i] = 1;
			long long res = rec(x * 10 + i, d + 1);
			long long d1 = abs(res - z);
			long long d2 = min(d1, p - d1);
			if(sa < d2) {
				ret = res;
				sa = d2;
			}
			vis[i] = 0;
		}
	}
	return ret;
}
int main() {
	cin >> s;
	n = s.size(); p = 1;
	for(int i = 0; i < n; i++) {
		z = z * 10 + s[i] - 48;
		p *= 10;
	}
	long long ret = rec(0, 0);
	for(int i = 0; i < n; i++) {
		p /= 10;
		cout << (ret / p) % 10;
	}
	cout << endl;
	return 0;
}
```