//============================================================================
// Name :
// Author : Atul Kumar Gupta
// Description :
// Status : AC
//============================================================================
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define dg(x) cout << '>' << #x << ':' << x << endl;
#define sz(c) (int) c.size()
#define all(c) c.begin(), c.end()
#define tr(container,it) for(__typeof(container.begin()) it = container.begin();it != container.end(); it++)
#define present(s,x) s.find(x) != s.end()
#define cpresent(c,x) find(all(c),x) != c.end()
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define rep(i,n) for(int i=0;i<n;i++)
#define dep(i,n) for(int i=n-1;i>=0;i--)
#define repn(i,a,b) for(int i=a; i<b;i++)
#define ini(n) scanf("%d",&n)
#define ind(n,m) scanf("%d %d",&n,&m);
#define inl(n) scanf("%l64d",&n)
#define ins(n) scanf("%s",n);
#define opi(n) printf("%d",n)
#define opl(n) printf("%l64d",n)
#define ops(n) printf("%s",n)
#define opn printf("\n")
#define opsp printf(" ");
#define opa(n) cout<<n
//#define TRACE
#ifdef TRACE
#define trace1(x) cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define trace3(x, y, z) cerr << #x << ": " << x << " | " << #y << ": " << y << " | " << #z << ": " << z << endl;
#define trace4(a, b, c, d) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << endl;
#define trace5(a, b, c, d, e) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << endl;
#define trace6(a, b, c, d, e, f) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << " | " << #f << ": " << f << endl;
#else
#define trace1(x)
#define trace2(x, y)
#define trace3(x, y, z)
#define trace4(a, b, c, d)
#define trace5(a, b, c, d, e)
#define trace6(a, b, c, d, e, f)
#endif
typedef pair<int,int> pi;
typedef vector<pi> vp;
typedef vector<vp> vvp;
typedef vector<int> vi;
typedef unsigned long long int ull;
typedef long long int ll;
typedef vector<ll> vl;
typedef vector< vi > vvi;
typedef priority_queue<int> pq;
typedef priority_queue<int, vi , greater<int> >minpq;
typedef priority_queue<pi,vp,greater<pi> > mpq;
//Euclidean GCD
//------------------------------------------
//============================================================================
int gcd(int A, int B) {
if(B==0)
return A;
else
return gcd(B, A % B);
}
//Fermat MMI
//------------------------------------------
//============================================================================
//a^n % m
ll mod_exponentiation(ll base, ll exponent, int modulus)
{
ll result = 1;
while (exponent > 0)
{
if (exponent % 2 == 1)
result = (result * base) % modulus;
exponent = exponent >> 1;
base = (base * base) % modulus;
}
return result;
}
int fermat(ll n, ll m){
return mod_exponentiation(n,m-2,m);
}
struct node{
int a;
int cnt;
};
//custom comparator
struct Compare{
bool operator()(node &a, node &b){
return a.cnt > b.cnt ;
}
};
//conversion
//============================================================================
//------------------------------------------
inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}
template<class T> inline string toString(T x) {ostringstream sout;sout<<x;return sout.str();}
//math
//-------------------------------------------
//============================================================================
template<class T> inline T sqr(T x) {return x*x;}
//Main Starts
//------------------------------------------
//============================================================================
string a,b;
vi pre,suf;
bool flag = false;
void prefix(){
int i=0,j=0;
while(i<sz(a) and j<sz(b)){
if(b[j] == a[i]){
pre.pb(i);
i++;
j++;
flag = true;
}
else
i++;
}
cout<<"prefix"<<endl;
tr(pre,it){
cout<<*it<<" "<<a[*it]<<endl;
}
}
void suffix(){
int i=sz(a)-1,j=sz(b)-1;
while(i>=0 and j>=0){
if(b[j] == a[i]){
suf.pb(i);
i--;
j--;
flag = true;
}
else
i--;
}
}
int interruption(){
if(pre[sz(pre)-1] <= suf[0])
return 0;
if(suf[sz(suf)-1] <= pre[0])
return 0;
return 1;
}
int main(){
//ios_base::sync_with_stdio(false);cin.tie(NULL);
cin>>a>>b;
prefix();
suffix();
if(!flag){
cout<<"-";
return 0;
}
//trace2(a,b);
sort(suf.begin() , suf.end());
cout<<"suffix"<<endl;
tr(suf,it){
cout<<*it<<" "<<a[*it]<<endl;
}
int i1 =-1 , i2=sz(suf);
int ans = 0;
if(sz(pre) == 0){
//cout<<"this 3 conditon is true\n";
for(int i=0;i<sz(suf);i++)
//if(suf[i]<sz(b))
cout<<a[suf[i]];
return 0;
}
if(sz(suf) == 0){
//cout<<"this 2 conditon is true\n";
for(int i=0;i<sz(pre);i++)
//if(pre[i]<sz(b))
cout<<a[pre[i]];
return 0;
}
if(interruption()){
cout<<"this interruption() conditon is true\n";
if(sz(pre) > sz(suf)){
for(int i=0;i<sz(pre);i++)
//if(pre[i]<sz(b))
cout<<a[pre[i]];
}
else{
for(int i=0;i<sz(suf);i++)
//if(suf[i]<sz(b))
cout<<a[suf[i]];
}
return 0;
}
else{
//cout<<"this 4 conditon is true\n";
int len=-1;
for(int i=0;i<sz(pre);i++){
auto it = upper_bound(suf.begin(),suf.end(),pre[i]);
if(it!=suf.end()){
//trace1((sz(suf)-(it-suf.begin())));
//trace1(i+1);
len = i+1 + (sz(suf)-(it-suf.begin()));
//trace1(len);
if(len>ans){
i1 = i;
i2 = it-suf.begin();
ans = len;
}
}
else{
len = i+1;
if(len>ans){
i1 = i;
i2 = sz(suf);
ans = len;
}
}
}
//trace2(i1,i2);
//trace1(ans);
if(ans > sz(b)){
//cout<<"this 5 conditon is true\n";
for(int i=0;i<sz(b);i++)
cout<<b[i];
return 0;
}
for(int i=0;i<=i1;i++){
//if(pre[i]<sz(b))
cout<<a[pre[i]];
}
for(int i=i2;i<sz(suf);i++){
//sif(suf[i]<sz(b))
cout<<a[suf[i]];
}
}
}
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIE5hbWUgICAgICAgIDogCi8vIEF1dGhvciAgICAgIDogQXR1bCBLdW1hciBHdXB0YQovLyBEZXNjcmlwdGlvbiA6IAovLyBTdGF0dXMJICAgOiBBQwovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKI2RlZmluZSBkZyh4KSBjb3V0IDw8ICc+JyA8PCAjeCA8PCAnOicgPDwgeCA8PCBlbmRsOwojZGVmaW5lIHN6KGMpICAoaW50KSBjLnNpemUoKQojZGVmaW5lIGFsbChjKSBjLmJlZ2luKCksIGMuZW5kKCkKI2RlZmluZSB0cihjb250YWluZXIsaXQpIGZvcihfX3R5cGVvZihjb250YWluZXIuYmVnaW4oKSkgaXQgPSBjb250YWluZXIuYmVnaW4oKTtpdCAhPSBjb250YWluZXIuZW5kKCk7IGl0KyspCiNkZWZpbmUgcHJlc2VudChzLHgpIHMuZmluZCh4KSAhPSBzLmVuZCgpCiNkZWZpbmUgY3ByZXNlbnQoYyx4KSBmaW5kKGFsbChjKSx4KSAhPSBjLmVuZCgpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSByZXAoaSxuKSBmb3IoaW50IGk9MDtpPG47aSsrKQojZGVmaW5lIGRlcChpLG4pIGZvcihpbnQgaT1uLTE7aT49MDtpLS0pCiNkZWZpbmUgcmVwbihpLGEsYikgZm9yKGludCBpPWE7IGk8YjtpKyspCiNkZWZpbmUgaW5pKG4pIHNjYW5mKCIlZCIsJm4pCiNkZWZpbmUgaW5kKG4sbSkgc2NhbmYoIiVkICVkIiwmbiwmbSk7CiNkZWZpbmUgaW5sKG4pIHNjYW5mKCIlbDY0ZCIsJm4pCiNkZWZpbmUgaW5zKG4pIHNjYW5mKCIlcyIsbik7CiNkZWZpbmUgb3BpKG4pIHByaW50ZigiJWQiLG4pCiNkZWZpbmUgb3BsKG4pIHByaW50ZigiJWw2NGQiLG4pCiNkZWZpbmUgb3BzKG4pIHByaW50ZigiJXMiLG4pCiNkZWZpbmUgb3BuIHByaW50ZigiXG4iKQojZGVmaW5lIG9wc3AgcHJpbnRmKCIgIik7CiNkZWZpbmUgb3BhKG4pIGNvdXQ8PG4KIAovLyNkZWZpbmUgVFJBQ0UKIAojaWZkZWYgVFJBQ0UKI2RlZmluZSB0cmFjZTEoeCkgICAgICAgICAgICAgICAgY2VyciA8PCAjeCA8PCAiOiAiIDw8IHggPDwgZW5kbDsKI2RlZmluZSB0cmFjZTIoeCwgeSkgICAgICAgICAgICAgY2VyciA8PCAjeCA8PCAiOiAiIDw8IHggPDwgIiB8ICIgPDwgI3kgPDwgIjogIiA8PCB5IDw8IGVuZGw7CiNkZWZpbmUgdHJhY2UzKHgsIHksIHopICAgICAgICAgIGNlcnIgPDwgI3ggPDwgIjogIiA8PCB4IDw8ICIgfCAiIDw8ICN5IDw8ICI6ICIgPDwgeSA8PCAiIHwgIiA8PCAjeiA8PCAiOiAiIDw8IHogPDwgZW5kbDsKI2RlZmluZSB0cmFjZTQoYSwgYiwgYywgZCkgICAgICAgY2VyciA8PCAjYSA8PCAiOiAiIDw8IGEgPDwgIiB8ICIgPDwgI2IgPDwgIjogIiA8PCBiIDw8ICIgfCAiIDw8ICNjIDw8ICI6ICIgPDwgYyA8PCAiIHwgIiA8PCAjZCA8PCAiOiAiIDw8IGQgPDwgZW5kbDsKI2RlZmluZSB0cmFjZTUoYSwgYiwgYywgZCwgZSkgICAgY2VyciA8PCAjYSA8PCAiOiAiIDw8IGEgPDwgIiB8ICIgPDwgI2IgPDwgIjogIiA8PCBiIDw8ICIgfCAiIDw8ICNjIDw8ICI6ICIgPDwgYyA8PCAiIHwgIiA8PCAjZCA8PCAiOiAiIDw8IGQgPDwgIiB8ICIgPDwgI2UgPDwgIjogIiA8PCBlIDw8IGVuZGw7CiNkZWZpbmUgdHJhY2U2KGEsIGIsIGMsIGQsIGUsIGYpIGNlcnIgPDwgI2EgPDwgIjogIiA8PCBhIDw8ICIgfCAiIDw8ICNiIDw8ICI6ICIgPDwgYiA8PCAiIHwgIiA8PCAjYyA8PCAiOiAiIDw8IGMgPDwgIiB8ICIgPDwgI2QgPDwgIjogIiA8PCBkIDw8ICIgfCAiIDw8ICNlIDw8ICI6ICIgPDwgZSA8PCAiIHwgIiA8PCAjZiA8PCAiOiAiIDw8IGYgPDwgZW5kbDsKIAojZWxzZQogCiNkZWZpbmUgdHJhY2UxKHgpCiNkZWZpbmUgdHJhY2UyKHgsIHkpCiNkZWZpbmUgdHJhY2UzKHgsIHksIHopCiNkZWZpbmUgdHJhY2U0KGEsIGIsIGMsIGQpICAgIAojZGVmaW5lIHRyYWNlNShhLCBiLCBjLCBkLCBlKQojZGVmaW5lIHRyYWNlNihhLCBiLCBjLCBkLCBlLCBmKQoKI2VuZGlmIAoKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpOwp0eXBlZGVmIHZlY3RvcjxwaT4gdnA7CnR5cGVkZWYgdmVjdG9yPHZwPiB2dnA7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1bGw7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsOwp0eXBlZGVmIHZlY3RvcjwgdmkgPiB2dmk7CnR5cGVkZWYgcHJpb3JpdHlfcXVldWU8aW50PiBwcTsKdHlwZWRlZiBwcmlvcml0eV9xdWV1ZTxpbnQsIHZpICwgZ3JlYXRlcjxpbnQ+ID5taW5wcTsKdHlwZWRlZiBwcmlvcml0eV9xdWV1ZTxwaSx2cCxncmVhdGVyPHBpPiA+IG1wcTsKCi8vRXVjbGlkZWFuIEdDRAovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KaW50IGdjZChpbnQgQSwgaW50IEIpIHsKICAgIGlmKEI9PTApCiAgICAgICAgcmV0dXJuIEE7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIGdjZChCLCBBICUgQik7Cn0KLy9GZXJtYXQgTU1JCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovL2FebiAlIG0KbGwgbW9kX2V4cG9uZW50aWF0aW9uKGxsIGJhc2UsIGxsIGV4cG9uZW50LCBpbnQgbW9kdWx1cykKewogICAgbGwgcmVzdWx0ID0gMTsKICAgIHdoaWxlIChleHBvbmVudCA+IDApCiAgICB7CiAgICAgICAgaWYgKGV4cG9uZW50ICUgMiA9PSAxKQogICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogYmFzZSkgJSBtb2R1bHVzOwogICAgICAgIGV4cG9uZW50ID0gZXhwb25lbnQgPj4gMTsKICAgICAgICBiYXNlID0gKGJhc2UgKiBiYXNlKSAlIG1vZHVsdXM7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbnQgZmVybWF0KGxsIG4sIGxsIG0pewoJcmV0dXJuIG1vZF9leHBvbmVudGlhdGlvbihuLG0tMixtKTsKfQoKc3RydWN0IG5vZGV7CglpbnQgYTsKCWludCBjbnQ7Cn07Ci8vY3VzdG9tIGNvbXBhcmF0b3IKc3RydWN0IENvbXBhcmV7Cglib29sIG9wZXJhdG9yKCkobm9kZSAmYSwgbm9kZSAmYil7CgkJcmV0dXJuIGEuY250ID4gYi5jbnQgOwoJfQp9OwoKLy9jb252ZXJzaW9uCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppbmxpbmUgaW50IHRvSW50KHN0cmluZyBzKSB7aW50IHY7IGlzdHJpbmdzdHJlYW0gc2luKHMpO3Npbj4+djtyZXR1cm4gdjt9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBzdHJpbmcgdG9TdHJpbmcoVCB4KSB7b3N0cmluZ3N0cmVhbSBzb3V0O3NvdXQ8PHg7cmV0dXJuIHNvdXQuc3RyKCk7fQoKLy9tYXRoCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIFQgc3FyKFQgeCkge3JldHVybiB4Kng7fQoKCi8vTWFpbiBTdGFydHMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpzdHJpbmcgYSxiOwp2aSBwcmUsc3VmOwpib29sIGZsYWcgPSAgZmFsc2U7CnZvaWQgcHJlZml4KCl7CglpbnQgaT0wLGo9MDsKCXdoaWxlKGk8c3ooYSkgYW5kIGo8c3ooYikpewoJCWlmKGJbal0gPT0gYVtpXSl7CgkJCXByZS5wYihpKTsKCQkJaSsrOwoJCQlqKys7CgkJCQoJCQlmbGFnID0gdHJ1ZTsKCQl9CgkJZWxzZQoJCQlpKys7Cgl9Cgljb3V0PDwicHJlZml4Ijw8ZW5kbDsKCXRyKHByZSxpdCl7CgkJY291dDw8Kml0PDwiICI8PGFbKml0XTw8ZW5kbDsKCX0KfQp2b2lkIHN1ZmZpeCgpewoJaW50IGk9c3ooYSktMSxqPXN6KGIpLTE7Cgl3aGlsZShpPj0wIGFuZCBqPj0wKXsKCQlpZihiW2pdID09IGFbaV0pewoJCQlzdWYucGIoaSk7CgkJCWktLTsKCQkJai0tOwoJCQkKCQkJZmxhZyA9IHRydWU7CgkJfQoJCWVsc2UKCQkJaS0tOwoJfQp9CgppbnQgaW50ZXJydXB0aW9uKCl7CglpZihwcmVbc3oocHJlKS0xXSA8PSBzdWZbMF0pCgkJcmV0dXJuIDA7CglpZihzdWZbc3ooc3VmKS0xXSA8PSBwcmVbMF0pCgkJcmV0dXJuIDA7CglyZXR1cm4gMTsKfQppbnQgbWFpbigpewoJLy9pb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKE5VTEwpOwoJY2luPj5hPj5iOwoJcHJlZml4KCk7CglzdWZmaXgoKTsKCWlmKCFmbGFnKXsKCQljb3V0PDwiLSI7CgkJcmV0dXJuIDA7Cgl9CgkvL3RyYWNlMihhLGIpOwoJc29ydChzdWYuYmVnaW4oKSAsIHN1Zi5lbmQoKSk7Cgljb3V0PDwic3VmZml4Ijw8ZW5kbDsKCXRyKHN1ZixpdCl7CgkJY291dDw8Kml0PDwiICI8PGFbKml0XTw8ZW5kbDsKCX0KCWludCBpMSA9LTEgLCBpMj1zeihzdWYpOwoJaW50IGFucyA9IDA7CglpZihzeihwcmUpID09IDApewoJCS8vY291dDw8InRoaXMgIDMgY29uZGl0b24gaXMgdHJ1ZVxuIjsKCQlmb3IoaW50IGk9MDtpPHN6KHN1Zik7aSsrKQoJCQkvL2lmKHN1ZltpXTxzeihiKSkKCQkJY291dDw8YVtzdWZbaV1dOwoJCXJldHVybiAwOyAKCX0KCWlmKHN6KHN1ZikgPT0gMCl7CgkJLy9jb3V0PDwidGhpcyAyIGNvbmRpdG9uIGlzIHRydWVcbiI7CgkJZm9yKGludCBpPTA7aTxzeihwcmUpO2krKykKCQkJLy9pZihwcmVbaV08c3ooYikpCgkJCWNvdXQ8PGFbcHJlW2ldXTsKCQlyZXR1cm4gMDsgCgl9CglpZihpbnRlcnJ1cHRpb24oKSl7CgkJY291dDw8InRoaXMgaW50ZXJydXB0aW9uKCkgY29uZGl0b24gaXMgdHJ1ZVxuIjsKCQlpZihzeihwcmUpID4gc3ooc3VmKSl7CgkJCWZvcihpbnQgaT0wO2k8c3oocHJlKTtpKyspCgkJCQkvL2lmKHByZVtpXTxzeihiKSkKCQkJCWNvdXQ8PGFbcHJlW2ldXTsKCQl9CgkJZWxzZXsKCQkJZm9yKGludCBpPTA7aTxzeihzdWYpO2krKykKCQkJCS8vaWYoc3VmW2ldPHN6KGIpKQoJCQkJY291dDw8YVtzdWZbaV1dOwoJCX0KCQlyZXR1cm4gMDsKCX0KCWVsc2V7CgkJLy9jb3V0PDwidGhpcyA0IGNvbmRpdG9uIGlzIHRydWVcbiI7CgkJaW50IGxlbj0tMTsKCQlmb3IoaW50IGk9MDtpPHN6KHByZSk7aSsrKXsKCQkJYXV0byBpdCA9IHVwcGVyX2JvdW5kKHN1Zi5iZWdpbigpLHN1Zi5lbmQoKSxwcmVbaV0pOwoJCQlpZihpdCE9c3VmLmVuZCgpKXsKCQkJCS8vdHJhY2UxKChzeihzdWYpLShpdC1zdWYuYmVnaW4oKSkpKTsKCQkJCS8vdHJhY2UxKGkrMSk7CgkJCQlsZW4gPSBpKzEgKyAoc3ooc3VmKS0oaXQtc3VmLmJlZ2luKCkpKTsKCQkJCS8vdHJhY2UxKGxlbik7CgkJCQlpZihsZW4+YW5zKXsKCQkJCQlpMSA9IGk7CgkJCQkJaTIgPSBpdC1zdWYuYmVnaW4oKTsKCQkJCQlhbnMgPSBsZW47CgkJCQl9CgkJCX0KCQkJZWxzZXsKCQkJCWxlbiA9IGkrMTsKCQkJCWlmKGxlbj5hbnMpewoJCQkJCWkxID0gaTsKCQkJCQlpMiA9IHN6KHN1Zik7CgkJCQkJYW5zID0gbGVuOwoJCQkJfQoJCQl9CgkJfQoJCS8vdHJhY2UyKGkxLGkyKTsKCQkvL3RyYWNlMShhbnMpOwoJCWlmKGFucyA+IHN6KGIpKXsKCQkJLy9jb3V0PDwidGhpcyA1IGNvbmRpdG9uIGlzIHRydWVcbiI7CgkJCWZvcihpbnQgaT0wO2k8c3ooYik7aSsrKQkKCQkJCWNvdXQ8PGJbaV07CgkJCXJldHVybiAwOwoJCX0KCQlmb3IoaW50IGk9MDtpPD1pMTtpKyspewoJCQkvL2lmKHByZVtpXTxzeihiKSkKCQkJY291dDw8YVtwcmVbaV1dOwoJCX0KCQlmb3IoaW50IGk9aTI7aTxzeihzdWYpO2krKyl7CgkJCS8vc2lmKHN1ZltpXTxzeihiKSkKCQkJY291dDw8YVtzdWZbaV1dOwoJCX0KCX0KCQoJCn0K