/*
* @Author: hungeazy
* @Date: 2025-10-21 10:00:32
* @Last Modified by: hungeazy
* @Last Modified time: 2025-10-21 15:55:28
*/
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;
using namespace __gnu_pbds;
bool M1;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define int long long
#define ll long long
#define ull unsigned long long
#define sz(x) x.size()
#define sqr(x) (1LL * (x) * (x))
#define all(x) x.begin(), x.end()
#define fill(f,x) memset(f,x,sizeof(f))
#define FOR(i,l,r) for(int i=l;i<=r;i++)
#define FOD(i,r,l) for(int i=r;i>=l;i--)
#define debug(x) cout << #x << " = " << x << '\n'
#define ii pair<int,int>
#define iii pair<int,ii>
#define di pair<ii,ii>
#define vi vector<int>
#define vii vector<ii>
#define mii map<int,int>
#define fi first
#define se second
#define pb push_back
#define MOD 1000000007
#define __lcm(a,b) (1ll * ((a) / __gcd((a), (b))) * (b))
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define MASK(i) (1LL << (i))
#define c_bit(i) __builtin_popcountll(i)
#define BIT(x,i) ((x) & MASK(i))
#define SET_ON(x,i) ((x) | MASK(i))
#define SET_OFF(x,i) ((x) & ~MASK(i))
#define oo 1e18
#define name ""
#define endl '\n'
#define memory() cerr << abs(&M2-&M1)/1024.0/1024 << " MB" << endl
#define time() cerr << endl << "-------------Time:" << 1000.0 * clock() / CLOCKS_PER_SEC << "ms." << endl
template<typename T> bool maximize(T &res, const T &val) { if (res < val){ res = val; return true; }; return false; }
template<typename T> bool minimize(T &res, const T &val) { if (res > val){ res = val; return true; }; return false; }
template <class T> using ordered_set = tree <T, null_type, less_equal <T>, rb_tree_tag,tree_order_statistics_node_update>;
const int N = (int)5e5+10;
int n,W;
struct Data {
int v,w;
bool operator<(const Data &other) {
return w > other.w;
}
} a[N];
namespace sub3 {
bool approved() {
return n <= 1e3 and W <= 1e4;
}
void solve(void)
{
sort(a+1,a+n+1);
mii dp;
dp[W] = 0;
FOR(i,1,n)
for (auto &x : dp)
if (x.fi >= a[i].w)
maximize(dp[x.fi-a[i].w],x.se+a[i].v);
int ans = 0;
for (auto &x : dp) maximize(ans,x.se);
cout << ans;
}
}
namespace sub5 {
bool approved() {
int x = a[1].w;
FOR(i,1,n)
if (a[i].w != x) return false;
return W <= 1e8;
}
void solve(void)
{
sort(a+1,a+n+1,[&](Data &x, Data &y) {
return x.v > y.v;
});
int w0 = a[1].w, k = min(W/w0,n);
int ans = 0;
FOR(i,1,k) ans += a[i].v;
cout << ans;
}
}
namespace sub6 {
map<int,vi> val;
int pre1[N],pre2[N];
bool approved() {
set<int> s;
FOR(i,1,n) s.insert(a[i].w);
return W <= 1e8 and sz(s) <= 2;
}
void solve(void)
{
FOR(i,1,n) val[a[i].w].pb(a[i].v);
int val1 = 0, len1 = 0, val2 = 0, len2 = 0;
for (auto x : val)
if (!val1)
{
len1 = sz(x.se);
val1 = x.fi;
sort(all(x.se),greater<int>());
FOR(i,0,len1-1)
pre1[i+1] = pre1[i]+x.se[i];
}
else
{
len2 = sz(x.se);
val2 = x.fi;
sort(all(x.se),greater<int>());
FOR(i,0,len2-1)
pre2[i+1] = pre2[i]+x.se[i];
}
int ans = 0;
FOR(i,0,len1-1)
if (val1*i >= W) break;
else
{
int cur = (W-(i*val1))/val2;
maximize(ans,pre1[i]+pre2[cur]);
}
cout << ans;
}
}
namespace sub7 {
vi val[N];
vi mergeSort(vi &a, vi &b)
{
int n = sz(a)-1, m = sz(b)-1;
vi ans(n+m+1);
int pos = 0;
FOR(i,0,n+m)
{
int l = max(0LL,i-m), r = min(i,n);
if (pos < l) pos = l;
if (pos > r) pos = r;
while (pos < r and a[pos+1]+b[i-(pos+1)] >= a[pos]+b[i-pos])
++pos;
ans[i] = a[pos]+b[i-pos];
}
return ans;
}
vi calc(vi &v, int tmp, int sz)
{
vi ans;
int pos = 1, sum = v[0];
while (pos < sz(v) and tmp > 0)
{
tmp--;
sum = v[pos++];
}
ans.pb(sum);
while (pos < sz(v))
{
int cur = pos+sz;
while (pos < sz(v) and pos < cur)
sum = v[pos++];
ans.pb(sum);
}
return ans;
}
void solve(void)
{
sort(a+1,a+n+1,[&](Data &x, Data &y) {
if (x.w == y.w) return x.v > y.v;
return x.w < y.w;
});
while (n and a[n].w > W) n--;
vi vec;
FOR(i,1,n) vec.pb(a[i].w);
vec.erase(unique(all(vec)),vec.end());
int len = sz(vec);
if (vec.empty())
{
cout << 0 << endl;
return;
}
FOR(i,0,len-1) val[i].pb(0);
int pos = 0;
FOR(i,1,n)
{
if (vec[pos] != a[i].w) pos++;
val[pos].pb(a[i].v);
}
FOR(i,0,pos)
FOR(j,1,sz(val[i])-1) val[i][j] += val[i][j-1];
FOR(i,0,pos-1)
{
int cur = (W-(W/vec[i+1])*vec[i+1])/vec[i], sz = vec[i+1]/vec[i];
val[i] = calc(val[i],cur,sz);
val[i+1] = mergeSort(val[i],val[i+1]);
}
int tmp = W/vec[pos];
cout << val[pos][min(tmp,(int)sz(val[pos])-1)];
}
}
bool M2;
signed main()
{
fast;
if (fopen(name".inp","r"))
{
freopen(name".inp","r",stdin);
freopen(name".out","w",stdout);
}
cin >> n >> W;
FOR(i,1,n) cin >> a[i].v >> a[i].w;
if (sub3::approved()) return sub3::solve(), time(), memory(), 0;
if (sub5::approved()) return sub5::solve(), time(), memory(), 0;
if (sub6::approved()) return sub6::solve(), time(), memory(), 0;
sub7::solve();
time();
memory();
return 0;
}
// ██░ ██ █ ██ ███▄ █ ▄████
//▓██░ ██▒ ██ ▓██▒ ██ ▀█ █ ██▒ ▀█▒
//▒██▀▀██░▓██ ▒██░▓██ ▀█ ██▒▒██░▄▄▄░
//░▓█ ░██ ▓▓█ ░██░▓██▒ ▐▌██▒░▓█ ██▓
//░▓█▒░██▓▒▒█████▓ ▒██░ ▓██░░▒▓███▀▒
// ▒ ░░▒░▒░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ░▒ ▒
// ▒ ░▒░ ░░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ░
// ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░
// ░ ░ ░ ░ ░ ░
LyoKKiBAQXV0aG9yOiBodW5nZWF6eQoqIEBEYXRlOiAgIDIwMjUtMTAtMjEgMTA6MDA6MzIKKiBATGFzdCBNb2RpZmllZCBieTogICBodW5nZWF6eQoqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjUtMTAtMjEgMTU6NTU6MjgKKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4gCiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPiAKLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zIikgIAovLyAjcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikgIAovLyAjcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIscG9wY250LGx6Y250IikgIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsgCmJvb2wgTTE7CiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgc3ooeCkgeC5zaXplKCkKI2RlZmluZSBzcXIoeCkgKDFMTCAqICh4KSAqICh4KSkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCiNkZWZpbmUgZmlsbChmLHgpIG1lbXNldChmLHgsc2l6ZW9mKGYpKQojZGVmaW5lIEZPUihpLGwscikgZm9yKGludCBpPWw7aTw9cjtpKyspCiNkZWZpbmUgRk9EKGkscixsKSBmb3IoaW50IGk9cjtpPj1sO2ktLSkKI2RlZmluZSBkZWJ1Zyh4KSBjb3V0IDw8ICN4IDw8ICIgPSAiIDw8IHggPDwgJ1xuJwojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBpaWkgcGFpcjxpbnQsaWk+CiNkZWZpbmUgZGkgcGFpcjxpaSxpaT4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZpaSB2ZWN0b3I8aWk+CiNkZWZpbmUgbWlpIG1hcDxpbnQsaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBfX2xjbShhLGIpICgxbGwgKiAoKGEpIC8gX19nY2QoKGEpLCAoYikpKSAqIChiKSkKI2RlZmluZSBZRVMgY291dCA8PCAiWUVTXG4iCiNkZWZpbmUgTk8gY291dCA8PCAiTk9cbiIKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIGNfYml0KGkpIF9fYnVpbHRpbl9wb3Bjb3VudGxsKGkpCiNkZWZpbmUgQklUKHgsaSkgKCh4KSAmIE1BU0soaSkpCiNkZWZpbmUgU0VUX09OKHgsaSkgKCh4KSB8IE1BU0soaSkpCiNkZWZpbmUgU0VUX09GRih4LGkpICgoeCkgJiB+TUFTSyhpKSkKI2RlZmluZSBvbyAxZTE4CiNkZWZpbmUgbmFtZSAiIgojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIG1lbW9yeSgpIGNlcnIgPDwgYWJzKCZNMi0mTTEpLzEwMjQuMC8xMDI0IDw8ICIgTUIiIDw8IGVuZGwKI2RlZmluZSB0aW1lKCkgY2VyciA8PCBlbmRsIDw8ICItLS0tLS0tLS0tLS0tVGltZToiIDw8IDEwMDAuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyA8PCAibXMuIiA8PCBlbmRsCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWF4aW1pemUoVCAmcmVzLCBjb25zdCBUICZ2YWwpIHsgaWYgKHJlcyA8IHZhbCl7IHJlcyA9IHZhbDsgcmV0dXJuIHRydWU7IH07IHJldHVybiBmYWxzZTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIG1pbmltaXplKFQgJnJlcywgY29uc3QgVCAmdmFsKSB7IGlmIChyZXMgPiB2YWwpeyByZXMgPSB2YWw7IHJldHVybiB0cnVlOyB9OyByZXR1cm4gZmFsc2U7IH0KdGVtcGxhdGUgPGNsYXNzIFQ+IHVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZSA8VCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsIDxUPiwgcmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKY29uc3QgaW50IE4gPSAoaW50KTVlNSsxMDsKaW50IG4sVzsKCnN0cnVjdCBEYXRhIHsKCWludCB2LHc7Cglib29sIG9wZXJhdG9yPChjb25zdCBEYXRhICZvdGhlcikgewoJCXJldHVybiB3ID4gb3RoZXIudzsKCX0KfSBhW05dOwoKbmFtZXNwYWNlIHN1YjMgewoKCWJvb2wgYXBwcm92ZWQoKSB7CgkJcmV0dXJuIG4gPD0gMWUzIGFuZCBXIDw9IDFlNDsKCX0KCgl2b2lkIHNvbHZlKHZvaWQpCgl7CgkJc29ydChhKzEsYStuKzEpOwoJCW1paSBkcDsKCQlkcFtXXSA9IDA7CgkJRk9SKGksMSxuKQoJCQlmb3IgKGF1dG8gJnggOiBkcCkKCQkJCWlmICh4LmZpID49IGFbaV0udykKCQkJCQltYXhpbWl6ZShkcFt4LmZpLWFbaV0ud10seC5zZSthW2ldLnYpOwoJCWludCBhbnMgPSAwOwoJCWZvciAoYXV0byAmeCA6IGRwKSBtYXhpbWl6ZShhbnMseC5zZSk7CgkJY291dCA8PCBhbnM7Cgl9CgkKfQoKbmFtZXNwYWNlIHN1YjUgewoKCWJvb2wgYXBwcm92ZWQoKSB7CgkJaW50IHggPSBhWzFdLnc7CgkJRk9SKGksMSxuKQoJCQlpZiAoYVtpXS53ICE9IHgpIHJldHVybiBmYWxzZTsKCQlyZXR1cm4gVyA8PSAxZTg7Cgl9CgoJdm9pZCBzb2x2ZSh2b2lkKQoJewoJCXNvcnQoYSsxLGErbisxLFsmXShEYXRhICZ4LCBEYXRhICZ5KSB7CgkJCXJldHVybiB4LnYgPiB5LnY7CgkJfSk7CgkJaW50IHcwID0gYVsxXS53LCBrID0gbWluKFcvdzAsbik7CgkJaW50IGFucyA9IDA7CgkJRk9SKGksMSxrKSBhbnMgKz0gYVtpXS52OwoJCWNvdXQgPDwgYW5zOwoJfQoKfQoKbmFtZXNwYWNlIHN1YjYgewoKCW1hcDxpbnQsdmk+IHZhbDsKCWludCBwcmUxW05dLHByZTJbTl07CgoJYm9vbCBhcHByb3ZlZCgpIHsKCQlzZXQ8aW50PiBzOwoJCUZPUihpLDEsbikgcy5pbnNlcnQoYVtpXS53KTsKCQlyZXR1cm4gVyA8PSAxZTggYW5kIHN6KHMpIDw9IDI7Cgl9CgoJdm9pZCBzb2x2ZSh2b2lkKQoJewoJCUZPUihpLDEsbikgdmFsW2FbaV0ud10ucGIoYVtpXS52KTsKCQlpbnQgdmFsMSA9IDAsIGxlbjEgPSAwLCB2YWwyID0gMCwgbGVuMiA9IDA7CgkJZm9yIChhdXRvIHggOiB2YWwpCgkJCWlmICghdmFsMSkKCQkJewoJCQkJbGVuMSA9IHN6KHguc2UpOwoJCQkJdmFsMSA9IHguZmk7CgkJCQlzb3J0KGFsbCh4LnNlKSxncmVhdGVyPGludD4oKSk7CgkJCQlGT1IoaSwwLGxlbjEtMSkKCQkJCQlwcmUxW2krMV0gPSBwcmUxW2ldK3guc2VbaV07CgkJCX0KCQkJZWxzZQoJCQl7CQoJCQkJbGVuMiA9IHN6KHguc2UpOwoJCQkJdmFsMiA9IHguZmk7CgkJCQlzb3J0KGFsbCh4LnNlKSxncmVhdGVyPGludD4oKSk7CgkJCQlGT1IoaSwwLGxlbjItMSkKCQkJCQlwcmUyW2krMV0gPSBwcmUyW2ldK3guc2VbaV07CgkJCX0KCQlpbnQgYW5zID0gMDsKCQlGT1IoaSwwLGxlbjEtMSkKCQkJaWYgKHZhbDEqaSA+PSBXKSBicmVhazsKCQkJZWxzZSAKCQkJewoJCQkJaW50IGN1ciA9IChXLShpKnZhbDEpKS92YWwyOwoJCQkJbWF4aW1pemUoYW5zLHByZTFbaV0rcHJlMltjdXJdKTsKCQkJfQoJCWNvdXQgPDwgYW5zOwoJfQoKfQoKbmFtZXNwYWNlIHN1YjcgewoKCXZpIHZhbFtOXTsKCgl2aSBtZXJnZVNvcnQodmkgJmEsIHZpICZiKQoJewoJCWludCBuID0gc3ooYSktMSwgbSA9IHN6KGIpLTE7CgkJdmkgYW5zKG4rbSsxKTsKCQlpbnQgcG9zID0gMDsKCQlGT1IoaSwwLG4rbSkKCQl7CgkJCWludCBsID0gbWF4KDBMTCxpLW0pLCByID0gbWluKGksbik7CgkJCWlmIChwb3MgPCBsKSBwb3MgPSBsOwoJCQlpZiAocG9zID4gcikgcG9zID0gcjsKCQkJd2hpbGUgKHBvcyA8IHIgYW5kIGFbcG9zKzFdK2JbaS0ocG9zKzEpXSA+PSBhW3Bvc10rYltpLXBvc10pIAoJCQkJKytwb3M7CgkJCWFuc1tpXSA9IGFbcG9zXStiW2ktcG9zXTsKCQl9CgkJcmV0dXJuIGFuczsKCX0KCgl2aSBjYWxjKHZpICZ2LCBpbnQgdG1wLCBpbnQgc3opCgl7CgkJdmkgYW5zOwoJCWludCBwb3MgPSAxLCBzdW0gPSB2WzBdOwoJCXdoaWxlIChwb3MgPCBzeih2KSBhbmQgdG1wID4gMCkKCQl7CgkJCXRtcC0tOwoJCQlzdW0gPSB2W3BvcysrXTsKCQl9CgkJYW5zLnBiKHN1bSk7CgkJd2hpbGUgKHBvcyA8IHN6KHYpKQoJCXsKCQkJaW50IGN1ciA9IHBvcytzejsKCQkJd2hpbGUgKHBvcyA8IHN6KHYpIGFuZCBwb3MgPCBjdXIpCgkJCQlzdW0gPSB2W3BvcysrXTsKCQkJYW5zLnBiKHN1bSk7CgkJfQoJCXJldHVybiBhbnM7Cgl9CgoJdm9pZCBzb2x2ZSh2b2lkKQoJewoJCXNvcnQoYSsxLGErbisxLFsmXShEYXRhICZ4LCBEYXRhICZ5KSB7CgkJCWlmICh4LncgPT0geS53KSByZXR1cm4geC52ID4geS52OwoJCQlyZXR1cm4geC53IDwgeS53OwoJCX0pOwkKCQl3aGlsZSAobiBhbmQgYVtuXS53ID4gVykgbi0tOwoJCXZpIHZlYzsKCQlGT1IoaSwxLG4pIHZlYy5wYihhW2ldLncpOwoJCXZlYy5lcmFzZSh1bmlxdWUoYWxsKHZlYykpLHZlYy5lbmQoKSk7CgkJaW50IGxlbiA9IHN6KHZlYyk7CgkJaWYgKHZlYy5lbXB0eSgpKQoJCXsKCQkJY291dCA8PCAwIDw8IGVuZGw7CgkJCXJldHVybjsKCQl9CgkJRk9SKGksMCxsZW4tMSkgdmFsW2ldLnBiKDApOwoJCWludCBwb3MgPSAwOwoJCUZPUihpLDEsbikKCQl7CgkJCWlmICh2ZWNbcG9zXSAhPSBhW2ldLncpIHBvcysrOwoJCQl2YWxbcG9zXS5wYihhW2ldLnYpOwoJCX0KCQlGT1IoaSwwLHBvcykKCQkJRk9SKGosMSxzeih2YWxbaV0pLTEpIHZhbFtpXVtqXSArPSB2YWxbaV1bai0xXTsKCQlGT1IoaSwwLHBvcy0xKQoJCXsKCQkJaW50IGN1ciA9IChXLShXL3ZlY1tpKzFdKSp2ZWNbaSsxXSkvdmVjW2ldLCBzeiA9IHZlY1tpKzFdL3ZlY1tpXTsKCQkJdmFsW2ldID0gY2FsYyh2YWxbaV0sY3VyLHN6KTsKCQkJdmFsW2krMV0gPSBtZXJnZVNvcnQodmFsW2ldLHZhbFtpKzFdKTsKCQl9CgkJaW50IHRtcCA9IFcvdmVjW3Bvc107CgkJY291dCA8PCB2YWxbcG9zXVttaW4odG1wLChpbnQpc3oodmFsW3Bvc10pLTEpXTsKCX0KCn0KCmJvb2wgTTI7CnNpZ25lZCBtYWluKCkKewogICAgZmFzdDsKICAgIGlmIChmb3BlbihuYW1lIi5pbnAiLCJyIikpCiAgICB7CiAgICAJZnJlb3BlbihuYW1lIi5pbnAiLCJyIixzdGRpbik7CiAgICAJZnJlb3BlbihuYW1lIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgY2luID4+IG4gPj4gVzsKICAgIEZPUihpLDEsbikgY2luID4+IGFbaV0udiA+PiBhW2ldLnc7CiAgICBpZiAoc3ViMzo6YXBwcm92ZWQoKSkgcmV0dXJuIHN1YjM6OnNvbHZlKCksIHRpbWUoKSwgbWVtb3J5KCksIDA7CiAgICBpZiAoc3ViNTo6YXBwcm92ZWQoKSkgcmV0dXJuIHN1YjU6OnNvbHZlKCksIHRpbWUoKSwgbWVtb3J5KCksIDA7CiAgICBpZiAoc3ViNjo6YXBwcm92ZWQoKSkgcmV0dXJuIHN1YjY6OnNvbHZlKCksIHRpbWUoKSwgbWVtb3J5KCksIDA7CiAgICBzdWI3Ojpzb2x2ZSgpOwogICAgdGltZSgpOwogICAgbWVtb3J5KCk7CiAgICByZXR1cm4gMDsKfQovLyDilojilojilpEg4paI4paIICDiloggICAg4paI4paIICDilojilojilojiloQgICAg4paIICAg4paE4paI4paI4paI4paICi8v4paT4paI4paI4paRIOKWiOKWiOKWkiDilojiloggIOKWk+KWiOKWiOKWkiDilojilogg4paA4paIICAg4paIICDilojilojilpIg4paA4paI4paSCi8v4paS4paI4paI4paA4paA4paI4paI4paR4paT4paI4paIICDilpLilojilojilpHilpPilojiloggIOKWgOKWiCDilojilojilpLilpLilojilojilpHiloTiloTiloTilpEKLy/ilpHilpPilogg4paR4paI4paIIOKWk+KWk+KWiCAg4paR4paI4paI4paR4paT4paI4paI4paSICDilpDilozilojilojilpLilpHilpPiloggIOKWiOKWiOKWkwovL+KWkeKWk+KWiOKWkuKWkeKWiOKWiOKWk+KWkuKWkuKWiOKWiOKWiOKWiOKWiOKWkyDilpLilojilojilpEgICDilpPilojilojilpHilpHilpLilpPilojilojilojiloDilpIKLy8g4paSIOKWkeKWkeKWkuKWkeKWkuKWkeKWkuKWk+KWkiDilpIg4paSIOKWkSDilpLilpEgICDilpIg4paSICDilpHilpIgICDilpIKLy8g4paSIOKWkeKWkuKWkSDilpHilpHilpHilpLilpEg4paRIOKWkSDilpEg4paR4paRICAg4paRIOKWkuKWkSAg4paRICAg4paRCi8vIOKWkSAg4paR4paRIOKWkSDilpHilpHilpEg4paRIOKWkSAgICDilpEgICDilpEg4paRIOKWkSDilpEgICDilpEKLy8g4paRICDilpEgIOKWkSAgIOKWkSAgICAgICAgICAgICAg4paRICAgICAgIOKWkQ==