#include<iostream>
using namespace std;
int a[11]; // 数字卡片的数量,0~9,共10个数字
// a[0]表示数字0的卡片数量,a[1]表示数字1的卡片数量,以此类推
int main(){
// 初始化数字卡片数量为2021
for(int i=0;i<10;i++)
a[i]=2021;
int cnt=1; // 当前要拼的数从1开始,cnt表示当前数
while(1){
int x=cnt;
// 尝试用手中的数字卡片拼出数字cnt
while(x){
// 如果某个数位上的数字卡片数量不足,那么就无法拼出数字cnt
if(a[x%10]==0){
// 输出最大能够拼出的数字cnt-1
cout<<cnt-1<<endl;
return 0;
}
// 使用数字卡片x%10
a[x%10]--;
// 转到下一位数位
x/=10;
}
// 如果可以拼出当前数字cnt,那么继续拼下一个数
cnt++;
}
}