description: Polycarp doesn't like integers that are divisible by 3 or end with the digit 3 in their decimal representation. Integers that meet both conditions are disliked by Polycarp, too.
  
  Polycarp starts to write out the positive (greater than 0) integers which he likes: 1, 2, 4, 5, 7, 8, 10, 11, 14, 16, .... Output the k-th element of this sequence (the elements are numbered from 1).
  
  Input
  
  The first line contains one integer t (1 ≤ t ≤ 100) — the number of test cases. Then t test cases follow.
  
  Each test case consists of one line containing one integer k (1 ≤ k ≤ 1000).
  
  Output
  
  For each test case, output in a separate line one integer x — the k-th element of the sequence that was written out by Polycarp.
  
  Example
  
  Input
  
  
  10
  1
  2
  3
  4
  5
  6
  7
  8
  9
  1000
  
  
  Output
  
  
  1
  2
  4
  5
  7
  8
  10
  11
  14
  1666
solution: import java.io.*;
  import java.util.*;
  public class All_In_One_Template{
  	public static int gcd(int a,int b){
  		if(a==0) return b;
  		return gcd(b%a,a);
  	}
     	public static int lcm(int a,int b){
  		return a*b/gcd(a,b);
  	}
  	public static boolean dig(int n){
  	   int N=n;
  	    int sum=0;
  	    while(n>0){
  	        //int di=n%10;
  	        sum+=n%10;
  	        n/=10;
  	    }
  	  //  System.out.println("for "+N+"sum is"+sum);
  	    if(sum%3==0) return true;
  	    else return false;
  	}
  	public static void main(String args[])
  	{
  		Scanner sc=new Scanner(System.in);
  		int dp[]=new int[1001];
  		dp[0]=0;
  		dp[1]=1;
  		for(int i=2;i<=1000;i++){
  		//	if(i%2==0) dp[i]=dp[i-1]+1;
  		//	else dp[i]=dp[i-1]+2;
  		dp[i]=dp[i-1]+1;
  			while(dp[i]%10 == 3 || dig(dp[i])) dp[i]++;
  		//	if(dp[i]%3==0) dp[i]++;
  			
  		//	if(dp[i]%10==3) dp[i]++;
  		//	if(dig(dp[i])) dp[i]++;
  		//	if(dp[i]%10==3) dp[i]++;
  	//		System.out.print(dp[i]+",");
  		}
  		int t=sc.nextInt();
  		while(t-->0){
  			int k=sc.nextInt();
  			System.out.println(dp[k]);
  		}
  	}
  }