#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define bye return
#define yes "YES"
#define no "NO"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define Shoyo ios_base::sync_with_stdio(0);cin.tie(NULL);
#define ff first
#define ss second
#define pii pair<ll,ll>
#define all(v) v.begin(), v.end()
#define allr(v) v.rbegin(), v.rend()
#define cl(x,y) (x + y - 1) / y
#define el "\n"
#define os tree<ll, null_type, less<>, \
rb_tree_tag, tree_order_statistics_node_update>
ll MOD = 1e9+7;
const ll N=1e5+10;
const ll INF = 1e17;
const ll Log=20;
ll n,c,mx;
vector<ll> v;
bool can(ll mid) {
if (mid*n>mx)return false;
ll x=c;
for (ll i=0;i<(n+n);i++) {
x+=v[i%n]-mid;
x=min(x,c);
if(x<0)return false;
}
return true;
}
void solve() {
cin>>n>>c;
v.assign(n,0);
for(ll i=0;i<n;i++)cin>>v[i];
mx=accumulate(all(v),ll(0));
ll l=0,r=2e9,ans=0;
while(l<=r) {
ll mid=(l+r)>>1;
if (can(mid)) {
ans=mid;
l=mid+1;
}else r=mid-1;
}
cout<<ans<<endl;
}
int main(){
Shoyo;
ll t = 1;
if(!(cin >> t)) return 0;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIGJ5ZSByZXR1cm4KI2RlZmluZSB5ZXMgIllFUyIKI2RlZmluZSBubyAiTk8iCiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwojZGVmaW5lIFNob3lvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZShOVUxMKTsKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIHBpaSBwYWlyPGxsLGxsPgojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBhbGxyKHYpIHYucmJlZ2luKCksIHYucmVuZCgpCiNkZWZpbmUgY2woeCx5KSAgKHggKyB5IC0gMSkgLyB5CiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIG9zIHRyZWU8bGwsIG51bGxfdHlwZSwgbGVzczw+LCBcCnJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+CmxsIE1PRCA9IDFlOSs3Owpjb25zdCBsbCBOPTFlNSsxMDsKY29uc3QgbGwgSU5GID0gMWUxNzsKY29uc3QgbGwgTG9nPTIwOwpsbCBuLGMsbXg7CnZlY3RvcjxsbD4gdjsKYm9vbCBjYW4obGwgbWlkKSB7CiAgICBpZiAobWlkKm4+bXgpcmV0dXJuIGZhbHNlOwogICAgbGwgeD1jOwogICAgZm9yIChsbCBpPTA7aTwobituKTtpKyspIHsKICAgICAgICB4Kz12W2klbl0tbWlkOwogICAgICAgIHg9bWluKHgsYyk7CiAgICAgICAgaWYoeDwwKXJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CnZvaWQgc29sdmUoKSB7CiAgICBjaW4+Pm4+PmM7CiAgICB2LmFzc2lnbihuLDApOwogICAgZm9yKGxsIGk9MDtpPG47aSsrKWNpbj4+dltpXTsKICAgIG14PWFjY3VtdWxhdGUoYWxsKHYpLGxsKDApKTsKICAgIGxsIGw9MCxyPTJlOSxhbnM9MDsKICAgIHdoaWxlKGw8PXIpIHsKICAgICAgICBsbCBtaWQ9KGwrcik+PjE7CiAgICAgICAgaWYgKGNhbihtaWQpKSB7CiAgICAgICAgICAgIGFucz1taWQ7CiAgICAgICAgICAgIGw9bWlkKzE7CiAgICAgICAgfWVsc2Ugcj1taWQtMTsKICAgIH0KICAgIGNvdXQ8PGFuczw8ZW5kbDsKfQppbnQgbWFpbigpewogICAgU2hveW87CiAgICBsbCB0ID0gMTsKICAgIGlmKCEoY2luID4+IHQpKSByZXR1cm4gMDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=