#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include using namespace std; #define CRP(t, x) const t &x #define OPL(t, x) bool operator<(CRP(t, x)) const #define FIL(x, v) memset(x, v, sizeof(x)) #define CLR(x) FIL(x, 0) #define NE1(x) FIL(x, -1) #define INF(x) FIL(x, 0x3f) #ifndef _DEBUG #define _DEBUG 0 #endif // !_DEBUG #define IFD if (_DEBUG) typedef long long ll, i64; const int N = 2e5 + 50; int p[N]; ll Q, n, X, A, Y, B, K; ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } ll lcm(ll a, ll b) { return a / gcd(a, b) * b; } bool check(int len) { if (len <= 0) return true; int ccnt = len / lcm(A, B); int acnt = len / A - ccnt; int bcnt = len / B - ccnt; ll ans = -1, tmp = 0; len = min(len, ccnt + acnt + bcnt); for (int i = 0; i < len; i++) { if (i < ccnt) tmp += p[i] * (X + Y); else if (i < ccnt + acnt) tmp += p[i] * X; else if (i < ccnt + acnt + bcnt) tmp += p[i] * Y; if (tmp >= K) { ans = i + 1; break; } } return ans == -1; } int main() { scanf("%lld", &Q); while (Q--) { scanf("%lld", &n); for (int i = 0; i < n; i++) scanf("%d", p + i), p[i] /= 100; scanf("%lld%lld%lld%lld%lld", &X, &A, &Y, &B, &K); if (X < Y) swap(A, B), swap(X, Y); sort(p, p + n, greater()); if (check(n)) puts("-1"); else { int L = 0, R = n + 1, M; while (R - L > 1) if (check(M = (L + R) >> 1)) L = M; else R = M; M = L; if (check(M)) M = R; printf("%d\n", M); } } return 0; }