#include<cstdio>#include<algorithm>typedef long long ll;struct E {int grade, odds;E() {}E(int g, int o) :grade(g), odds(o) {}bool operator<(const E &e) const {return ((ll) grade * odds) / 100 < ((ll) e.grade * e.odds) / 100;}};char s[100];int main() {int testCount;scanf("%d", &testCount);while (testCount--) {int total;scanf("%d", &total);int odds[3];for (int i = 0; i < 3; ++i) {scanf("%s", s);odds[i] = 0;for (int j = 0; s[j]; ++j) {if (s[j] != '.') {odds[i] = odds[i] * 10 + (s[j] - '0');}}}int sum = 0;for (int i = 0; i < 3; ++i) {sum += odds[i] * odds[(i + 1) % 3];}E e[3];for (int i = 0; i < 3; ++i) {e[i] = E(std::max(0LL,(ll) total * odds[(i + 1) % 3] * odds[(i + 2) % 3]/ sum - 1), odds[i]);}int used = 0;for (int i = 0; i < 3; ++i) {used += e[i].grade;}std::sort(e, e + 3);int result = total;int left = total - used;for (int i = 0; i < total - used; ++i, --left) {result = std::max((ll) result,((ll) e[0].grade * e[0].odds) / 100 + left);e[0].grade++;std::sort(e, e + 3);}result = std::max((ll) result, ((ll) e[0].grade * e[0].odds) / 100);printf("%dn", result);}}


