#!/usr/bin/env python3

for tn in range(int(input())):
  (n, strong, weak, strength, brength) = map(int, input().split())

  def get_score(streaks):
    gdays=max(0, strength*streaks)
    bdays=max(0, brength*(streaks-1))
    if gdays+bdays >= n:
      over_by = gdays+bdays - n
      if over_by >= gdays+bdays:
        q = over_by // (gdays+bdays)
        gdays -= q*strength
        bdays -= q*brength
      if gdays+bdays > n:
        gdays -= min(strength,(gdays+bdays)-n)
      if gdays+bdays > n:
        bdays -= min(brength,(gdays+bdays)-n)
    assert(gdays+bdays <= n)
    return strong*gdays+weak*(n-gdays-bdays)

  best=0

  a=0
  b=(n//(strength+brength))+1
  while a<=b:
    u = (a*2+b+0) // 3
    v = (a+b*2+2) // 3
    us = get_score(u)
    vs = get_score(v)
    if us < vs:
      a = u+1
    else:
      b = v-1
    best = max(best, max(us, vs))

  print(best)
