// Problem: G. Maximize the Remaining String
// Contest: Codeforces - Codeforces Round #710 (Div. 3)
// URL: https://codeforces.com/contest/1506/problem/G
// Memory Limit: 256 MB
// Time Limit: 2500 ms

/*Love coding and thinking!*/ 
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <set>
#include <map>
#include <vector>
#define pb push_back 
#define mem(f, x) memset(f,x,sizeof(f)) 
#define fo(i,a,n) for(int i=(a);i<=(n);++i)
#define fo2(i,a,n) for(int i=(a);i<(n);++i)
#define debug(x) cout<<#x<<":"<<x<<endl;
#define endl '\n'
using namespace std;
typedef pair<int,int>PII;
typedef pair<long,long>PLL;


typedef long long ll;
const int N=2e5+10;
int n,m,_;
char s[N];
char ans[N];//答案数组
map<char,bool>st;
map<char,int>mp;//
int main()
{
	cin>>_;
	while(_--)
	{
		mp.clear();
		st.clear();//统计某个字符是否在答案中出现
		scanf("%s",s+1);
		// cout<<s+1<<endl;
		int len=strlen(s+1);
		for(int i=1;i<=len;i++)
			mp[s[i]]++;
		int num=0;
		
		// for(auto c:mp)
			// cout<<c.first<<" "<<c.second<<endl;
			
		for(int i=1;i<=len;i++)
		{
			if(num==0)
			{
				ans[++num]=s[i];
				st[s[i]]=1;
				mp[s[i]]--;
				continue;//第一个字符特殊处理
			}
			else if(!st[s[i]])
			{
				while(s[i]>=ans[num]&&mp[ans[num]]&&num>0)//删除前一个
				{
					st[ans[num]]=0;//把前边的这个字符给他删去
					// mp[s[i]]++;
					num--;
				}
			//添加新的字符
				ans[++num]=s[i];

				st[s[i]]=1;
			}
				mp[s[i]]--;

			// debug(num);
			// for(int i=1;i<=num;i++)
				// printf("%c",ans[i]);
			// puts("");
		}
		
		for(int i=1;i<=num;i++)
			printf("%c",ans[i]);
		puts("");
	}	
	
	return 0;
}









