object main{
  object Solver extends InputReader{
    def g(n: Long): Boolean = {
      if(n == 0){
        false
      }else{
        n % 10 == 3 || g(n / 10)
      }
    }

    def f(n: Long): Boolean = {
      n % 3 == 0 || g(n)
    }

    def solve(){
      val a = getLong()
      val b = getLong()
      for(i <- a to b; if(f(i))){
        println(i)
      }
    }
  }

  // TEMPLATE ------------------------

  def main(args: Array[String]){
    Solver.solve()
  }

  trait InputReader{
    import java.io._
    import java.util._
    protected val stream = System.in
    private val reader = new BufferedReader(new InputStreamReader(stream))
    private var tokenizer = new StringTokenizer(reader.readLine())

    def getStr(): String = {
      while(!tokenizer.hasMoreTokens())
        tokenizer = new StringTokenizer(reader.readLine())
      tokenizer.nextToken()
    }

    def getInt(): Int = getStr().toInt
    def getLong(): Long = getStr().toLong
    def getDouble(): Double = getStr().toDouble
  }
}