m = gets.to_i
m.times{
  init = gets.to_i
  y  = gets.to_i
  n = gets.to_i
  max=0
  n.times{
    kind,bene,tesu = gets.split
    kind = kind.to_i
    bene = bene.to_f
    tesu = tesu.to_i
    if kind == 0
      a=init
      sum=0
      y.times{
        b=(a*bene).floor
        sum+=b
        a-=tesu
      }
      max=[a+sum,max].max
    else
      a=init
      y.times{
        b=(a*bene).floor
        a=a+b-tesu
      }
      max = [a,max].max
    end
  }
  puts max
}