/*#include <bits/stdc++.h>

using namespace std;
int adj[110][110];
int n,m,a,b,sz,ans,cnt,idx;
set <int> st;
vector <pair<int,int>> dlts;
int main()
{
    cin>>n>>m;
    for (int i=0; i<m; i++)
    {
        cin>>a>>b;
        st.insert(a);
        st.insert(b);
        adj[a][b]=1;
        adj[b][a]=1;
    }
    sz=st.size();
    while (sz>1)
    {
        for (int i=1; i<=n; i++)
        {
            cnt=0;
            if (st.find(i)!=st.end())
            {

                for (int j=1; j<=n; j++)
                {
                    if (adj[i][j]==1)
                    {
                        idx=j;
                        cnt++;
                    }
                    if (cnt>1) break;

                }
            }
            if (cnt==1)
            {
                adj[i][idx]=0;
                //adj[idx][i]=0;
                dlts.push_back(make_pair(idx,i));
                st.erase(i);
                sz--;
            }
        }
        if (dlts.size()==0 ) break;
        for (int i=0;i<dlts.size();i++)
            adj[dlts[i].first][dlts[i].second]=0;
        dlts.clear();

        ans++;
    }
    cout<<ans<<"\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//228 B
#define ll unsigned long long
int na,ma,nb,mb;
char a[55][55],b[55][55];
vector <pair <int,int>> v;
set <pair <int,int>> st;
int x,y,xans,yans,ans,mx;
int main()
{
    cin>>na>>ma;
    for (int i=1;i<=na;i++)
        for (int j=1;j<=ma;j++)
    {
        cin>>a[i][j];
        if (a[i][j]=='1') v.push_back(make_pair(i,j));
    }
    cin>>nb>>mb;
    for (int i=1;i<=nb;i++)
        for (int j=1;j<=mb;j++)
    {
        cin>>b[i][j];
        if (b[i][j]=='1') st.insert(make_pair(i,j));
    }
    //cout<<"v size :"<<v.size()<<"\n";
    //cout<<"st size :"<<st.size()<<"\n";
    for (x=-50;x<=50;x++)
        {for (y=-50;y<=50;y++)
    {
        //cout<<"X : "<<x<<" Y :"<<y<<endl;
        int i=0;
        ans=0;
        while (i<v.size())
        {
            pair <int,int> u=make_pair(v[i].first + x ,v[i].second+y);
            if ( st.find(u)!=st.end() )
                ans++;
            i++;
        }
        //cout<<"ans : "<<ans<<endl;
       if (ans>mx)
       {
           mx=ans;
           xans=x;
           yans=y;
       }

    }
        }
    cout<<xans<<" "<<yans<<endl;

    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//219 B Crashes on 999 or 1000000
#define ll unsigned long long int
ll p,d,ans,mxcnt,tns=10;
ll NineCnt(ll n)
{
    ll cnt=0;
    while (n!=0)
    {
        if (n%10 == 9 ) cnt++;
        else
            break;
        n/=10;

    }
    return cnt;
}
ll Max9()
{
    ll tens=10,cpy=p+1;
    ll Cut=cpy%10 + ((cpy/10)%10) * 10;
    cpy/=100;
     cout<<"P-Cut : "<<p-Cut<<endl;
     cout<<"Cut : "<<Cut<<endl;
     cout<<"Cpy : "<<cpy<<endl;
     ans=p-Cut;
    bool in=0;
    while (p-Cut>=p-d && cpy!=0)
    {
        cout<<"P-Cut : "<<p-Cut<<endl;
        cout<<"Cut : "<<Cut<<endl;
        cout<<"Cpy : "<<cpy<<endl;
        ans=p-Cut;
        tens*=10;
        if (cpy%10==0)
            Cut+= tens;
        else
            Cut+=(cpy%10) * tens;
        cpy/=10;
        in=1;

    }
    if (in)
    return ans;
    else
        return -1;
}
int main()
{
    cin>>p>>d;
        //cout<<"in else\n";
        ll frst9=p-(p%10+1);
        ll ans=Max9();
        if (p<=9)
            cout<<p<<"\n";
         else if (ans==-1 || NineCnt(frst9)>NineCnt(ans))
            cout<<"frst9 :"<<frst9<<"\n";
        else
         cout<<"Ans :"<<ans<<"\n";

    return 0;
}
/*numDigits=1+floor(log10(p));
    cout<<"numDigits :"<<numDigits<<"\n";
    for (ll i=1;i<numDigits;i++)
        {
            tns*=10;
            cout<<tns<<"\n";
        }
    cout<<"tns bfr :"<<tns-1<<"\n";
    if (tns<=p && tns>=p-d)
        cout<<"Tns :"<<tns-1<<"\n";
    else
    {*/

/*#include <bits/stdc++.h>
using namespace std;
long long n,k,a[110000];
int main()
{
    cin>>n;
    for (int i=0;i<n;i++)
        cin>>a[i];
    for (int i=0;i<n-1;i++)
    {
        if (a[i]>a[i+1])
            k+=a[i]-a[i+1];
    }
    cout<<k<<"\n";
    return 0;
}*/
/*#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <utility>
#include <stack>
#include <sstream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <deque>
#include <bitset>
#include <functional>
#include <numeric>
#include <utility>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

#define FOR(i,a,b)				for (i=a;i<b;i++)
#define s(n)					scanf("%d",&n)
#define p(n)					printf("%d\n",n)
#define sd(n)					int n;scanf("%d",&n)
#define pb(n)                                   push_back(n)
#define clr(a)                                  memset(a,0,sizeof(a))
#define all(c)                                  (c).begin(),(c).end()

typedef vector <int> vi;
typedef vector <vi> vvi;
typedef vector <string> vstr;
typedef long long ll;
//231 B
int main()
{
    sd(n);sd(d);sd(l);
    int i;
    vi ans;
    FOR(i,0,n-1)
    {
		if(d>0)
		{
			ans.pb(l);
			d = l-d;
			cout<<"d >0 : (l-d) "<<d<<"\n";
		}
		else
		{
			ans.pb(1);
			d = 1-d;
			cout<<"d <0 : (one-d) "<<d<<"\n";
		}
    }
    if(d<=l && d>=1)
	{
		FOR(i,0,n-1)
			printf("%d ",ans[i]);
		printf("%d\n",d);
	}
	else
		printf("-1\n");
	return 0;
}*/
/*#include<cmath>
#include<iostream>
using namespace std;
//281 B
int main(){
    int n;
    double e=999999,x,y,b=1,a=0,tb=1,ta=0;
    cin>>x>>y>>n;
    while(b<=n){
        while(abs(a/b-x/y)>abs((a+1)/b-x/y))
            {
                cout<<"a : "<<a<<"  b : "<<b<<"\n";
                a++;
            }
        if(abs(a/b-x/y)<e)
            tb=b,ta=a,e=abs(a/b-x/y);
        if(e==0)
            break;
        b++;
    }
    cout<<ta<<"/"<<tb;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//63 B
#define ll unsigned long long int
int n,cnt,p[1100],l,r
bool can,in;
int main()
{
    cin>>n>>k;
    for (int i=1;i<=n;i++)
        cin>>p[i];
    int i=o;
    while (i<n)
    {
        i++;
        if (arr[i] != i )
            {
                while (i<n)
                {
                if (in)
                {
                    can=0;
                    break;
                }
                in=1; l=i;
            if (arr[i]<arr[i+1] && arr[i+1]-arr[i]!=1 && arr[i+1]!=i+1)
                {
                    can=0;
                    break;
                }
            if (arr[i+1]==i+1)
                r=i+1;

                }

            )
            }

    }
    if (can)
        cout<<l<<" "<<r<<"\n";
    else
        cout<<"0.0\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
//9 B
#define  ll long long
using namespace std;
int a[2005],n,vs,vb,xu,yu,stop=999999;
double best=999999,ans,t;
int main()
{
    cin>>n>>vb>>vs;
    for (int i=1; i<=n; i++)
            cin>>a[i];
    cin>>xu>>yu;
    for (int i=1;i<=n;i++)
    {
        if (i==1 ) continue;
        int xdiff=xu-a[i];
       // double s2=sqrt(xdiff*xdiff - yu*yu);
        //double s1=a[i];
        int s2=sqrt(xdiff*xdiff - yu*yu);
        int s1=a[i];
        t=double(s1)/vb + double(s2)/vs;
        cout<<"t : "<<t<<"\n";
        cout<<"s2 : "<<s2<<"\n";
        if (t <=best && s2<stop)

        ans=i;
        best=t;
        stop=s2;

        }
    cout<<ans<<"\n";

    return 0;
}
*/
/*#include <bits/stdc++.h>
using namespace std;
//275 B
#define ll unsigned long long int
int n,m;
char grid[55][55];
int directionCnt[55][55];
bool vis[55][55];

bool valid(int i, int j)
{
    if (i>=0 && i<=n && j>=0 && j<=m )return 1;
    return 0;
}
void srch (int i,int j, int cnt,int x)
{
    if (!valid(i,j) || vis[i][j] || grid[i][j]=='W')
        return ;
    vis[i][j]=1;
    if (grid[i][j]=='B' && x!=5)
    {
        directionCnt[i][j]=min(directionCnt[i][j],cnt);
    }
    if (x!=1)
        srch (i+1,j,cnt+1,1);
    else
        srch (i+1,j,cnt,1);

    if (x!=2)
        srch (i-1,j,cnt+1,2);
    else
        srch (i-1,j,cnt,2);

    if (x!=3)
        srch (i,j+1,cnt+1,3);
    else
        srch (i,j+1,cnt,3);

    if (x!=4)
        srch (i,j-1,cnt+1,4);
    else
        srch (i,j-1,cnt,4);

    vis[i][j]=0;

}
vector <pair<int,int>> black;
bool can=1;
int main()
{
    cin>>n>>m;
    for (int i=0; i<n; i++)
        for (int j=0 ; j<m; j++)
            {
                cin>>grid[i][j];
                directionCnt[i][j]=999999;
                if (grid[i][j]=='B')
                    black.push_back(make_pair(i,j));
            }

    for (int i=0; i<black.size(); i++)
                {
                    //cout<<black[i].first<<" "<<black[i].second<<"\n";
                    srch(black[i].first,black[i].second,-1,5);
                }
    for (int i=0;i<black.size();i++)
                    {
                        cout<<"direction cnt of "<<black[i].first<"  ";
                        cout<<black[i].second<<"  : "<<directionCnt[black[i].first][black[i].second]<<"\n";
                        if (directionCnt[black[i].first][black[i].second] > 1)
                            {
                                can=0;
                                break;
                            }
                    }

    if (can)
        cout<<"YES\n";
    else
        cout<<"NO\n";

    return 0;
}
*/
#include <bits/stdc++.h>
using namespace std;
//31B
#define ll unsigned long long int
string s,temp;
int prevpos=-3;
bool can=1;
vector <int> pos;
int main()
{
    //pos.push_back(0);
    cin>>s;
    for (int i=0;i<s.size();i++)
    {
        if (s[i]=='@')
        {
            pos.push_back(i);
            if ((i==0 ) || i==s.size()-1)
            {
                can=0; break;
            }
            if (i-prevpos<=2 && pos.size()>1)
                {
                    can=0;
                    break;
                }
            prevpos=i;
        }
    }
    if (can)
    {
        for (int i=0;i<pos.size();i++)
    {
        if (i=pos.size()==1)
        {
            cout<<s<<"\n";
            return 0;
        }

        if (i==0)
            temp=s.substr(0,pos[i]+2);
        else if (i==pos.size()-1)
             temp=s.substr(pos[i-1]+2,200);
        else
            temp=s.substr(pos[i-1]+2,pos[i]-pos[i-1]);
        if (i!=pos.size()-1)
        cout<<temp<<",";
        else
        cout<<temp<<"\n";
    }
    }
    else
        cout<<"No solution\n";

    //for (auto x: pos) cout<<x<<"\n";
    return 0;
}


/*#include <bits/stdc++.h>

using namespace std;
int adj[110][110];
int n,m,a,b,sz,ans,cnt,idx;
set <int> st;
vector <pair<int,int>> dlts;
int main()
{
    cin>>n>>m;
    for (int i=0; i<m; i++)
    {
        cin>>a>>b;
        st.insert(a);
        st.insert(b);
        adj[a][b]=1;
        adj[b][a]=1;
    }
    sz=st.size();
    while (sz>1)
    {
        for (int i=1; i<=n; i++)
        {
            cnt=0;
            if (st.find(i)!=st.end())
            {

                for (int j=1; j<=n; j++)
                {
                    if (adj[i][j]==1)
                    {
                        idx=j;
                        cnt++;
                    }
                    if (cnt>1) break;

                }
            }
            if (cnt==1)
            {
                adj[i][idx]=0;
                //adj[idx][i]=0;
                dlts.push_back(make_pair(idx,i));
                st.erase(i);
                sz--;
            }
        }
        if (dlts.size()==0 ) break;
        for (int i=0;i<dlts.size();i++)
            adj[dlts[i].first][dlts[i].second]=0;
        dlts.clear();

        ans++;
    }
    cout<<ans<<"\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//228 B
#define ll unsigned long long
int na,ma,nb,mb;
char a[55][55],b[55][55];
vector <pair <int,int>> v;
set <pair <int,int>> st;
int x,y,xans,yans,ans,mx;
int main()
{
    cin>>na>>ma;
    for (int i=1;i<=na;i++)
        for (int j=1;j<=ma;j++)
    {
        cin>>a[i][j];
        if (a[i][j]=='1') v.push_back(make_pair(i,j));
    }
    cin>>nb>>mb;
    for (int i=1;i<=nb;i++)
        for (int j=1;j<=mb;j++)
    {
        cin>>b[i][j];
        if (b[i][j]=='1') st.insert(make_pair(i,j));
    }
    //cout<<"v size :"<<v.size()<<"\n";
    //cout<<"st size :"<<st.size()<<"\n";
    for (x=-50;x<=50;x++)
        {for (y=-50;y<=50;y++)
    {
        //cout<<"X : "<<x<<" Y :"<<y<<endl;
        int i=0;
        ans=0;
        while (i<v.size())
        {
            pair <int,int> u=make_pair(v[i].first + x ,v[i].second+y);
            if ( st.find(u)!=st.end() )
                ans++;
            i++;
        }
        //cout<<"ans : "<<ans<<endl;
       if (ans>mx)
       {
           mx=ans;
           xans=x;
           yans=y;
       }

    }
        }
    cout<<xans<<" "<<yans<<endl;

    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//219 B Crashes on 999 or 1000000
#define ll unsigned long long int
ll p,d,ans,mxcnt,tns=10;
ll NineCnt(ll n)
{
    ll cnt=0;
    while (n!=0)
    {
        if (n%10 == 9 ) cnt++;
        else
            break;
        n/=10;

    }
    return cnt;
}
ll Max9()
{
    ll tens=10,cpy=p+1;
    ll Cut=cpy%10 + ((cpy/10)%10) * 10;
    cpy/=100;
     cout<<"P-Cut : "<<p-Cut<<endl;
     cout<<"Cut : "<<Cut<<endl;
     cout<<"Cpy : "<<cpy<<endl;
     ans=p-Cut;
    bool in=0;
    while (p-Cut>=p-d && cpy!=0)
    {
        cout<<"P-Cut : "<<p-Cut<<endl;
        cout<<"Cut : "<<Cut<<endl;
        cout<<"Cpy : "<<cpy<<endl;
        ans=p-Cut;
        tens*=10;
        if (cpy%10==0)
            Cut+= tens;
        else
            Cut+=(cpy%10) * tens;
        cpy/=10;
        in=1;

    }
    if (in)
    return ans;
    else
        return -1;
}
int main()
{
    cin>>p>>d;
        //cout<<"in else\n";
        ll frst9=p-(p%10+1);
        ll ans=Max9();
        if (p<=9)
            cout<<p<<"\n";
         else if (ans==-1 || NineCnt(frst9)>NineCnt(ans))
            cout<<"frst9 :"<<frst9<<"\n";
        else
         cout<<"Ans :"<<ans<<"\n";

    return 0;
}
/*numDigits=1+floor(log10(p));
    cout<<"numDigits :"<<numDigits<<"\n";
    for (ll i=1;i<numDigits;i++)
        {
            tns*=10;
            cout<<tns<<"\n";
        }
    cout<<"tns bfr :"<<tns-1<<"\n";
    if (tns<=p && tns>=p-d)
        cout<<"Tns :"<<tns-1<<"\n";
    else
    {*/

/*#include <bits/stdc++.h>
using namespace std;
long long n,k,a[110000];
int main()
{
    cin>>n;
    for (int i=0;i<n;i++)
        cin>>a[i];
    for (int i=0;i<n-1;i++)
    {
        if (a[i]>a[i+1])
            k+=a[i]-a[i+1];
    }
    cout<<k<<"\n";
    return 0;
}*/
/*#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <utility>
#include <stack>
#include <sstream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <deque>
#include <bitset>
#include <functional>
#include <numeric>
#include <utility>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

#define FOR(i,a,b)				for (i=a;i<b;i++)
#define s(n)					scanf("%d",&n)
#define p(n)					printf("%d\n",n)
#define sd(n)					int n;scanf("%d",&n)
#define pb(n)                                   push_back(n)
#define clr(a)                                  memset(a,0,sizeof(a))
#define all(c)                                  (c).begin(),(c).end()

typedef vector <int> vi;
typedef vector <vi> vvi;
typedef vector <string> vstr;
typedef long long ll;
//231 B
int main()
{
    sd(n);sd(d);sd(l);
    int i;
    vi ans;
    FOR(i,0,n-1)
    {
		if(d>0)
		{
			ans.pb(l);
			d = l-d;
			cout<<"d >0 : (l-d) "<<d<<"\n";
		}
		else
		{
			ans.pb(1);
			d = 1-d;
			cout<<"d <0 : (one-d) "<<d<<"\n";
		}
    }
    if(d<=l && d>=1)
	{
		FOR(i,0,n-1)
			printf("%d ",ans[i]);
		printf("%d\n",d);
	}
	else
		printf("-1\n");
	return 0;
}*/
/*#include<cmath>
#include<iostream>
using namespace std;
//281 B
int main(){
    int n;
    double e=999999,x,y,b=1,a=0,tb=1,ta=0;
    cin>>x>>y>>n;
    while(b<=n){
        while(abs(a/b-x/y)>abs((a+1)/b-x/y))
            {
                cout<<"a : "<<a<<"  b : "<<b<<"\n";
                a++;
            }
        if(abs(a/b-x/y)<e)
            tb=b,ta=a,e=abs(a/b-x/y);
        if(e==0)
            break;
        b++;
    }
    cout<<ta<<"/"<<tb;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//63 B
#define ll unsigned long long int
int n,cnt,p[1100],l,r
bool can,in;
int main()
{
    cin>>n>>k;
    for (int i=1;i<=n;i++)
        cin>>p[i];
    int i=o;
    while (i<n)
    {
        i++;
        if (arr[i] != i )
            {
                while (i<n)
                {
                if (in)
                {
                    can=0;
                    break;
                }
                in=1; l=i;
            if (arr[i]<arr[i+1] && arr[i+1]-arr[i]!=1 && arr[i+1]!=i+1)
                {
                    can=0;
                    break;
                }
            if (arr[i+1]==i+1)
                r=i+1;

                }

            )
            }

    }
    if (can)
        cout<<l<<" "<<r<<"\n";
    else
        cout<<"0.0\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
//9 B
#define  ll long long
using namespace std;
int a[2005],n,vs,vb,xu,yu,stop=999999;
double best=999999,ans,t;
int main()
{
    cin>>n>>vb>>vs;
    for (int i=1; i<=n; i++)
            cin>>a[i];
    cin>>xu>>yu;
    for (int i=1;i<=n;i++)
    {
        if (i==1 ) continue;
        int xdiff=xu-a[i];
       // double s2=sqrt(xdiff*xdiff - yu*yu);
        //double s1=a[i];
        int s2=sqrt(xdiff*xdiff - yu*yu);
        int s1=a[i];
        t=double(s1)/vb + double(s2)/vs;
        cout<<"t : "<<t<<"\n";
        cout<<"s2 : "<<s2<<"\n";
        if (t <=best && s2<stop)

        ans=i;
        best=t;
        stop=s2;

        }
    cout<<ans<<"\n";

    return 0;
}
*/
/*#include <bits/stdc++.h>
using namespace std;
//275 B
#define ll unsigned long long int
int n,m;
char grid[55][55];
int directionCnt[55][55];
bool vis[55][55];

bool valid(int i, int j)
{
    if (i>=0 && i<=n && j>=0 && j<=m )return 1;
    return 0;
}
void srch (int i,int j, int cnt,int x)
{
    if (!valid(i,j) || vis[i][j] || grid[i][j]=='W')
        return ;
    vis[i][j]=1;
    if (grid[i][j]=='B' && x!=5)
    {
        directionCnt[i][j]=min(directionCnt[i][j],cnt);
    }
    if (x!=1)
        srch (i+1,j,cnt+1,1);
    else
        srch (i+1,j,cnt,1);

    if (x!=2)
        srch (i-1,j,cnt+1,2);
    else
        srch (i-1,j,cnt,2);

    if (x!=3)
        srch (i,j+1,cnt+1,3);
    else
        srch (i,j+1,cnt,3);

    if (x!=4)
        srch (i,j-1,cnt+1,4);
    else
        srch (i,j-1,cnt,4);

    vis[i][j]=0;

}
vector <pair<int,int>> black;
bool can=1;
int main()
{
    cin>>n>>m;
    for (int i=0; i<n; i++)
        for (int j=0 ; j<m; j++)
            {
                cin>>grid[i][j];
                directionCnt[i][j]=999999;
                if (grid[i][j]=='B')
                    black.push_back(make_pair(i,j));
            }

    for (int i=0; i<black.size(); i++)
                {
                    //cout<<black[i].first<<" "<<black[i].second<<"\n";
                    srch(black[i].first,black[i].second,-1,5);
                }
    for (int i=0;i<black.size();i++)
                    {
                        cout<<"direction cnt of "<<black[i].first<"  ";
                        cout<<black[i].second<<"  : "<<directionCnt[black[i].first][black[i].second]<<"\n";
                        if (directionCnt[black[i].first][black[i].second] > 1)
                            {
                                can=0;
                                break;
                            }
                    }

    if (can)
        cout<<"YES\n";
    else
        cout<<"NO\n";

    return 0;
}
*/
#include <bits/stdc++.h>
using namespace std;
//31B
#define ll unsigned long long int
string s,temp;
int prevpos=-3;
bool can=1;
vector <int> pos;
int main()
{
    //pos.push_back(0);
    cin>>s;
    for (int i=0;i<s.size();i++)
    {
        if (s[i]=='@')
        {
            pos.push_back(i);
            if ((i==0 ) || i==s.size()-1)
            {
                can=0; break;
            }
            if (i-prevpos<=2 && pos.size()>1)
                {
                    can=0;
                    break;
                }
            prevpos=i;
        }
    }
    if (can)
    {
        for (int i=0;i<pos.size();i++)
    {
        if (pos.size()==1)
        {
            cout<<s<<"\n";
            return 0;
        }

        if (i==0)
            temp=s.substr(0,pos[i]+2);
        else if (i==pos.size()-1)
             temp=s.substr(pos[i-1]+2,200);
        else
            temp=s.substr(pos[i-1]+2,pos[i]-pos[i-1]);
        if (i!=pos.size()-1)
        cout<<temp<<",";
        else
        cout<<temp<<"\n";
    }
    }
    else
        cout<<"No solution\n";

    //for (auto x: pos) cout<<x<<"\n";
    return 0;
}


/*#include <bits/stdc++.h>

using namespace std;
int adj[110][110];
int n,m,a,b,sz,ans,cnt,idx;
set <int> st;
vector <pair<int,int>> dlts;
int main()
{
    cin>>n>>m;
    for (int i=0; i<m; i++)
    {
        cin>>a>>b;
        st.insert(a);
        st.insert(b);
        adj[a][b]=1;
        adj[b][a]=1;
    }
    sz=st.size();
    while (sz>1)
    {
        for (int i=1; i<=n; i++)
        {
            cnt=0;
            if (st.find(i)!=st.end())
            {

                for (int j=1; j<=n; j++)
                {
                    if (adj[i][j]==1)
                    {
                        idx=j;
                        cnt++;
                    }
                    if (cnt>1) break;

                }
            }
            if (cnt==1)
            {
                adj[i][idx]=0;
                //adj[idx][i]=0;
                dlts.push_back(make_pair(idx,i));
                st.erase(i);
                sz--;
            }
        }
        if (dlts.size()==0 ) break;
        for (int i=0;i<dlts.size();i++)
            adj[dlts[i].first][dlts[i].second]=0;
        dlts.clear();

        ans++;
    }
    cout<<ans<<"\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//228 B
#define ll unsigned long long
int na,ma,nb,mb;
char a[55][55],b[55][55];
vector <pair <int,int>> v;
set <pair <int,int>> st;
int x,y,xans,yans,ans,mx;
int main()
{
    cin>>na>>ma;
    for (int i=1;i<=na;i++)
        for (int j=1;j<=ma;j++)
    {
        cin>>a[i][j];
        if (a[i][j]=='1') v.push_back(make_pair(i,j));
    }
    cin>>nb>>mb;
    for (int i=1;i<=nb;i++)
        for (int j=1;j<=mb;j++)
    {
        cin>>b[i][j];
        if (b[i][j]=='1') st.insert(make_pair(i,j));
    }
    //cout<<"v size :"<<v.size()<<"\n";
    //cout<<"st size :"<<st.size()<<"\n";
    for (x=-50;x<=50;x++)
        {for (y=-50;y<=50;y++)
    {
        //cout<<"X : "<<x<<" Y :"<<y<<endl;
        int i=0;
        ans=0;
        while (i<v.size())
        {
            pair <int,int> u=make_pair(v[i].first + x ,v[i].second+y);
            if ( st.find(u)!=st.end() )
                ans++;
            i++;
        }
        //cout<<"ans : "<<ans<<endl;
       if (ans>mx)
       {
           mx=ans;
           xans=x;
           yans=y;
       }

    }
        }
    cout<<xans<<" "<<yans<<endl;

    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//219 B Crashes on 999 or 1000000
#define ll unsigned long long int
ll p,d,ans,mxcnt,tns=10;
ll NineCnt(ll n)
{
    ll cnt=0;
    while (n!=0)
    {
        if (n%10 == 9 ) cnt++;
        else
            break;
        n/=10;

    }
    return cnt;
}
ll Max9()
{
    ll tens=10,cpy=p+1;
    ll Cut=cpy%10 + ((cpy/10)%10) * 10;
    cpy/=100;
     cout<<"P-Cut : "<<p-Cut<<endl;
     cout<<"Cut : "<<Cut<<endl;
     cout<<"Cpy : "<<cpy<<endl;
     ans=p-Cut;
    bool in=0;
    while (p-Cut>=p-d && cpy!=0)
    {
        cout<<"P-Cut : "<<p-Cut<<endl;
        cout<<"Cut : "<<Cut<<endl;
        cout<<"Cpy : "<<cpy<<endl;
        ans=p-Cut;
        tens*=10;
        if (cpy%10==0)
            Cut+= tens;
        else
            Cut+=(cpy%10) * tens;
        cpy/=10;
        in=1;

    }
    if (in)
    return ans;
    else
        return -1;
}
int main()
{
    cin>>p>>d;
        //cout<<"in else\n";
        ll frst9=p-(p%10+1);
        ll ans=Max9();
        if (p<=9)
            cout<<p<<"\n";
         else if (ans==-1 || NineCnt(frst9)>NineCnt(ans))
            cout<<"frst9 :"<<frst9<<"\n";
        else
         cout<<"Ans :"<<ans<<"\n";

    return 0;
}
/*numDigits=1+floor(log10(p));
    cout<<"numDigits :"<<numDigits<<"\n";
    for (ll i=1;i<numDigits;i++)
        {
            tns*=10;
            cout<<tns<<"\n";
        }
    cout<<"tns bfr :"<<tns-1<<"\n";
    if (tns<=p && tns>=p-d)
        cout<<"Tns :"<<tns-1<<"\n";
    else
    {*/

/*#include <bits/stdc++.h>
using namespace std;
long long n,k,a[110000];
int main()
{
    cin>>n;
    for (int i=0;i<n;i++)
        cin>>a[i];
    for (int i=0;i<n-1;i++)
    {
        if (a[i]>a[i+1])
            k+=a[i]-a[i+1];
    }
    cout<<k<<"\n";
    return 0;
}*/
/*#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <utility>
#include <stack>
#include <sstream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <deque>
#include <bitset>
#include <functional>
#include <numeric>
#include <utility>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

#define FOR(i,a,b)				for (i=a;i<b;i++)
#define s(n)					scanf("%d",&n)
#define p(n)					printf("%d\n",n)
#define sd(n)					int n;scanf("%d",&n)
#define pb(n)                                   push_back(n)
#define clr(a)                                  memset(a,0,sizeof(a))
#define all(c)                                  (c).begin(),(c).end()

typedef vector <int> vi;
typedef vector <vi> vvi;
typedef vector <string> vstr;
typedef long long ll;
//231 B
int main()
{
    sd(n);sd(d);sd(l);
    int i;
    vi ans;
    FOR(i,0,n-1)
    {
		if(d>0)
		{
			ans.pb(l);
			d = l-d;
			cout<<"d >0 : (l-d) "<<d<<"\n";
		}
		else
		{
			ans.pb(1);
			d = 1-d;
			cout<<"d <0 : (one-d) "<<d<<"\n";
		}
    }
    if(d<=l && d>=1)
	{
		FOR(i,0,n-1)
			printf("%d ",ans[i]);
		printf("%d\n",d);
	}
	else
		printf("-1\n");
	return 0;
}*/
/*#include<cmath>
#include<iostream>
using namespace std;
//281 B
int main(){
    int n;
    double e=999999,x,y,b=1,a=0,tb=1,ta=0;
    cin>>x>>y>>n;
    while(b<=n){
        while(abs(a/b-x/y)>abs((a+1)/b-x/y))
            {
                cout<<"a : "<<a<<"  b : "<<b<<"\n";
                a++;
            }
        if(abs(a/b-x/y)<e)
            tb=b,ta=a,e=abs(a/b-x/y);
        if(e==0)
            break;
        b++;
    }
    cout<<ta<<"/"<<tb;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//63 B
#define ll unsigned long long int
int n,cnt,p[1100],l,r
bool can,in;
int main()
{
    cin>>n>>k;
    for (int i=1;i<=n;i++)
        cin>>p[i];
    int i=o;
    while (i<n)
    {
        i++;
        if (arr[i] != i )
            {
                while (i<n)
                {
                if (in)
                {
                    can=0;
                    break;
                }
                in=1; l=i;
            if (arr[i]<arr[i+1] && arr[i+1]-arr[i]!=1 && arr[i+1]!=i+1)
                {
                    can=0;
                    break;
                }
            if (arr[i+1]==i+1)
                r=i+1;

                }

            )
            }

    }
    if (can)
        cout<<l<<" "<<r<<"\n";
    else
        cout<<"0.0\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
//9 B
#define  ll long long
using namespace std;
int a[2005],n,vs,vb,xu,yu,stop=999999;
double best=999999,ans,t;
int main()
{
    cin>>n>>vb>>vs;
    for (int i=1; i<=n; i++)
            cin>>a[i];
    cin>>xu>>yu;
    for (int i=1;i<=n;i++)
    {
        if (i==1 ) continue;
        int xdiff=xu-a[i];
       // double s2=sqrt(xdiff*xdiff - yu*yu);
        //double s1=a[i];
        int s2=sqrt(xdiff*xdiff - yu*yu);
        int s1=a[i];
        t=double(s1)/vb + double(s2)/vs;
        cout<<"t : "<<t<<"\n";
        cout<<"s2 : "<<s2<<"\n";
        if (t <=best && s2<stop)

        ans=i;
        best=t;
        stop=s2;

        }
    cout<<ans<<"\n";

    return 0;
}
*/
/*#include <bits/stdc++.h>
using namespace std;
//275 B
#define ll unsigned long long int
int n,m;
char grid[55][55];
int directionCnt[55][55];
bool vis[55][55];

bool valid(int i, int j)
{
    if (i>=0 && i<=n && j>=0 && j<=m )return 1;
    return 0;
}
void srch (int i,int j, int cnt,int x)
{
    if (!valid(i,j) || vis[i][j] || grid[i][j]=='W')
        return ;
    vis[i][j]=1;
    if (grid[i][j]=='B' && x!=5)
    {
        directionCnt[i][j]=min(directionCnt[i][j],cnt);
    }
    if (x!=1)
        srch (i+1,j,cnt+1,1);
    else
        srch (i+1,j,cnt,1);

    if (x!=2)
        srch (i-1,j,cnt+1,2);
    else
        srch (i-1,j,cnt,2);

    if (x!=3)
        srch (i,j+1,cnt+1,3);
    else
        srch (i,j+1,cnt,3);

    if (x!=4)
        srch (i,j-1,cnt+1,4);
    else
        srch (i,j-1,cnt,4);

    vis[i][j]=0;

}
vector <pair<int,int>> black;
bool can=1;
int main()
{
    cin>>n>>m;
    for (int i=0; i<n; i++)
        for (int j=0 ; j<m; j++)
            {
                cin>>grid[i][j];
                directionCnt[i][j]=999999;
                if (grid[i][j]=='B')
                    black.push_back(make_pair(i,j));
            }

    for (int i=0; i<black.size(); i++)
                {
                    //cout<<black[i].first<<" "<<black[i].second<<"\n";
                    srch(black[i].first,black[i].second,-1,5);
                }
    for (int i=0;i<black.size();i++)
                    {
                        cout<<"direction cnt of "<<black[i].first<"  ";
                        cout<<black[i].second<<"  : "<<directionCnt[black[i].first][black[i].second]<<"\n";
                        if (directionCnt[black[i].first][black[i].second] > 1)
                            {
                                can=0;
                                break;
                            }
                    }

    if (can)
        cout<<"YES\n";
    else
        cout<<"NO\n";

    return 0;
}
*/
#include <bits/stdc++.h>
using namespace std;
//31B
#define ll unsigned long long int
string s,temp;
int prevpos=-3;
bool can=1;
vector <int> pos;
int main()
{
    //pos.push_back(0);
    cin>>s;
    for (int i=0;i<s.size();i++)
    {
        if (s[i]=='@')
        {
            pos.push_back(i);
            if ((i==0 ) || i==s.size()-1)
            {
                can=0; break;
            }
            if (i-prevpos<=2 && pos.size()>1)
                {
                    can=0;
                    break;
                }
            prevpos=i;
        }
    if (pos.size()==0) can=0;
    }
    if (can)
    {
        for (int i=0;i<pos.size();i++)
    {
        if (pos.size()==1)
        {
            cout<<s<<"\n";
            return 0;
        }

        if (i==0)
            temp=s.substr(0,pos[i]+2);
        else if (i==pos.size()-1)
             temp=s.substr(pos[i-1]+2,200);
        else
            temp=s.substr(pos[i-1]+2,pos[i]-pos[i-1]);
        if (i!=pos.size()-1)
        cout<<temp<<",";
        else
        cout<<temp<<"\n";
    }
    }
    else
        cout<<"No solution\n";

    //for (auto x: pos) cout<<x<<"\n";
    return 0;
}
/*#include <bits/stdc++.h>
using namespace std;
//31B
#define ll unsigned long long int
int main()
{
    return 0;
}
*/


/*#include <bits/stdc++.h>

using namespace std;
int adj[110][110];
int n,m,a,b,sz,ans,cnt,idx;
set <int> st;
vector <pair<int,int>> dlts;
int main()
{
    cin>>n>>m;
    for (int i=0; i<m; i++)
    {
        cin>>a>>b;
        st.insert(a);
        st.insert(b);
        adj[a][b]=1;
        adj[b][a]=1;
    }
    sz=st.size();
    while (sz>1)
    {
        for (int i=1; i<=n; i++)
        {
            cnt=0;
            if (st.find(i)!=st.end())
            {

                for (int j=1; j<=n; j++)
                {
                    if (adj[i][j]==1)
                    {
                        idx=j;
                        cnt++;
                    }
                    if (cnt>1) break;

                }
            }
            if (cnt==1)
            {
                adj[i][idx]=0;
                //adj[idx][i]=0;
                dlts.push_back(make_pair(idx,i));
                st.erase(i);
                sz--;
            }
        }
        if (dlts.size()==0 ) break;
        for (int i=0;i<dlts.size();i++)
            adj[dlts[i].first][dlts[i].second]=0;
        dlts.clear();

        ans++;
    }
    cout<<ans<<"\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//228 B
#define ll unsigned long long
int na,ma,nb,mb;
char a[55][55],b[55][55];
vector <pair <int,int>> v;
set <pair <int,int>> st;
int x,y,xans,yans,ans,mx;
int main()
{
    cin>>na>>ma;
    for (int i=1;i<=na;i++)
        for (int j=1;j<=ma;j++)
    {
        cin>>a[i][j];
        if (a[i][j]=='1') v.push_back(make_pair(i,j));
    }
    cin>>nb>>mb;
    for (int i=1;i<=nb;i++)
        for (int j=1;j<=mb;j++)
    {
        cin>>b[i][j];
        if (b[i][j]=='1') st.insert(make_pair(i,j));
    }
    //cout<<"v size :"<<v.size()<<"\n";
    //cout<<"st size :"<<st.size()<<"\n";
    for (x=-50;x<=50;x++)
        {for (y=-50;y<=50;y++)
    {
        //cout<<"X : "<<x<<" Y :"<<y<<endl;
        int i=0;
        ans=0;
        while (i<v.size())
        {
            pair <int,int> u=make_pair(v[i].first + x ,v[i].second+y);
            if ( st.find(u)!=st.end() )
                ans++;
            i++;
        }
        //cout<<"ans : "<<ans<<endl;
       if (ans>mx)
       {
           mx=ans;
           xans=x;
           yans=y;
       }

    }
        }
    cout<<xans<<" "<<yans<<endl;

    return 0;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//219 B Crashes on 999 or 1000000
#define ll unsigned long long int
ll p,d,ans,mxcnt,tns=10;
ll NineCnt(ll n)
{
    ll cnt=0;
    while (n!=0)
    {
        if (n%10 == 9 ) cnt++;
        else
            break;
        n/=10;

    }
    return cnt;
}
ll Max9()
{
    ll tens=10,cpy=p+1;
    ll Cut=cpy%10 + ((cpy/10)%10) * 10;
    cpy/=100;
     cout<<"P-Cut : "<<p-Cut<<endl;
     cout<<"Cut : "<<Cut<<endl;
     cout<<"Cpy : "<<cpy<<endl;
     ans=p-Cut;
    bool in=0;
    while (p-Cut>=p-d && cpy!=0)
    {
        cout<<"P-Cut : "<<p-Cut<<endl;
        cout<<"Cut : "<<Cut<<endl;
        cout<<"Cpy : "<<cpy<<endl;
        ans=p-Cut;
        tens*=10;
        if (cpy%10==0)
            Cut+= tens;
        else
            Cut+=(cpy%10) * tens;
        cpy/=10;
        in=1;

    }
    if (in)
    return ans;
    else
        return -1;
}
int main()
{
    cin>>p>>d;
        //cout<<"in else\n";
        ll frst9=p-(p%10+1);
        ll ans=Max9();
        if (p<=9)
            cout<<p<<"\n";
         else if (ans==-1 || NineCnt(frst9)>NineCnt(ans))
            cout<<"frst9 :"<<frst9<<"\n";
        else
         cout<<"Ans :"<<ans<<"\n";

    return 0;
}
/*numDigits=1+floor(log10(p));
    cout<<"numDigits :"<<numDigits<<"\n";
    for (ll i=1;i<numDigits;i++)
        {
            tns*=10;
            cout<<tns<<"\n";
        }
    cout<<"tns bfr :"<<tns-1<<"\n";
    if (tns<=p && tns>=p-d)
        cout<<"Tns :"<<tns-1<<"\n";
    else
    {*/

/*#include <bits/stdc++.h>
using namespace std;
long long n,k,a[110000];
int main()
{
    cin>>n;
    for (int i=0;i<n;i++)
        cin>>a[i];
    for (int i=0;i<n-1;i++)
    {
        if (a[i]>a[i+1])
            k+=a[i]-a[i+1];
    }
    cout<<k<<"\n";
    return 0;
}*/
/*#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <utility>
#include <stack>
#include <sstream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <deque>
#include <bitset>
#include <functional>
#include <numeric>
#include <utility>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

#define FOR(i,a,b)				for (i=a;i<b;i++)
#define s(n)					scanf("%d",&n)
#define p(n)					printf("%d\n",n)
#define sd(n)					int n;scanf("%d",&n)
#define pb(n)                                   push_back(n)
#define clr(a)                                  memset(a,0,sizeof(a))
#define all(c)                                  (c).begin(),(c).end()

typedef vector <int> vi;
typedef vector <vi> vvi;
typedef vector <string> vstr;
typedef long long ll;
//231 B
int main()
{
    sd(n);sd(d);sd(l);
    int i;
    vi ans;
    FOR(i,0,n-1)
    {
		if(d>0)
		{
			ans.pb(l);
			d = l-d;
			cout<<"d >0 : (l-d) "<<d<<"\n";
		}
		else
		{
			ans.pb(1);
			d = 1-d;
			cout<<"d <0 : (one-d) "<<d<<"\n";
		}
    }
    if(d<=l && d>=1)
	{
		FOR(i,0,n-1)
			printf("%d ",ans[i]);
		printf("%d\n",d);
	}
	else
		printf("-1\n");
	return 0;
}*/
/*#include<cmath>
#include<iostream>
using namespace std;
//281 B
int main(){
    int n;
    double e=999999,x,y,b=1,a=0,tb=1,ta=0;
    cin>>x>>y>>n;
    while(b<=n){
        while(abs(a/b-x/y)>abs((a+1)/b-x/y))
            {
                cout<<"a : "<<a<<"  b : "<<b<<"\n";
                a++;
            }
        if(abs(a/b-x/y)<e)
            tb=b,ta=a,e=abs(a/b-x/y);
        if(e==0)
            break;
        b++;
    }
    cout<<ta<<"/"<<tb;
}*/
/*#include <bits/stdc++.h>
using namespace std;
//63 B
#define ll unsigned long long int
int n,cnt,p[1100],l,r
bool can,in;
int main()
{
    cin>>n>>k;
    for (int i=1;i<=n;i++)
        cin>>p[i];
    int i=o;
    while (i<n)
    {
        i++;
        if (arr[i] != i )
            {
                while (i<n)
                {
                if (in)
                {
                    can=0;
                    break;
                }
                in=1; l=i;
            if (arr[i]<arr[i+1] && arr[i+1]-arr[i]!=1 && arr[i+1]!=i+1)
                {
                    can=0;
                    break;
                }
            if (arr[i+1]==i+1)
                r=i+1;

                }

            )
            }

    }
    if (can)
        cout<<l<<" "<<r<<"\n";
    else
        cout<<"0.0\n";
    return 0;
}*/
/*#include <bits/stdc++.h>
//9 B
#define  ll long long
using namespace std;
int a[2005],n,vs,vb,xu,yu,stop=999999;
double best=999999,ans,t;
int main()
{
    cin>>n>>vb>>vs;
    for (int i=1; i<=n; i++)
            cin>>a[i];
    cin>>xu>>yu;
    for (int i=1;i<=n;i++)
    {
        if (i==1 ) continue;
        int xdiff=xu-a[i];
       // double s2=sqrt(xdiff*xdiff - yu*yu);
        //double s1=a[i];
        int s2=sqrt(xdiff*xdiff - yu*yu);
        int s1=a[i];
        t=double(s1)/vb + double(s2)/vs;
        cout<<"t : "<<t<<"\n";
        cout<<"s2 : "<<s2<<"\n";
        if (t <=best && s2<stop)

        ans=i;
        best=t;
        stop=s2;

        }
    cout<<ans<<"\n";

    return 0;
}
*/
/*#include <bits/stdc++.h>
using namespace std;
//275 B
#define ll unsigned long long int
int n,m;
char grid[55][55];
int directionCnt[55][55];
bool vis[55][55];

bool valid(int i, int j)
{
    if (i>=0 && i<=n && j>=0 && j<=m )return 1;
    return 0;
}
void srch (int i,int j, int cnt,int x)
{
    if (!valid(i,j) || vis[i][j] || grid[i][j]=='W')
        return ;
    vis[i][j]=1;
    if (grid[i][j]=='B' && x!=5)
    {
        directionCnt[i][j]=min(directionCnt[i][j],cnt);
    }
    if (x!=1)
        srch (i+1,j,cnt+1,1);
    else
        srch (i+1,j,cnt,1);

    if (x!=2)
        srch (i-1,j,cnt+1,2);
    else
        srch (i-1,j,cnt,2);

    if (x!=3)
        srch (i,j+1,cnt+1,3);
    else
        srch (i,j+1,cnt,3);

    if (x!=4)
        srch (i,j-1,cnt+1,4);
    else
        srch (i,j-1,cnt,4);

    vis[i][j]=0;

}
vector <pair<int,int>> black;
bool can=1;
int main()
{
    cin>>n>>m;
    for (int i=0; i<n; i++)
        for (int j=0 ; j<m; j++)
            {
                cin>>grid[i][j];
                directionCnt[i][j]=999999;
                if (grid[i][j]=='B')
                    black.push_back(make_pair(i,j));
            }

    for (int i=0; i<black.size(); i++)
                {
                    //cout<<black[i].first<<" "<<black[i].second<<"\n";
                    srch(black[i].first,black[i].second,-1,5);
                }
    for (int i=0;i<black.size();i++)
                    {
                        cout<<"direction cnt of "<<black[i].first<"  ";
                        cout<<black[i].second<<"  : "<<directionCnt[black[i].first][black[i].second]<<"\n";
                        if (directionCnt[black[i].first][black[i].second] > 1)
                            {
                                can=0;
                                break;
                            }
                    }

    if (can)
        cout<<"YES\n";
    else
        cout<<"NO\n";

    return 0;
}
*/
#include <bits/stdc++.h>
using namespace std;
//31B
#define ll unsigned long long int
string s,temp;
int prevpos=-3;
bool can=1;
vector <int> pos;
int main()
{
    //pos.push_back(0);
    cin>>s;
    for (int i=0;i<s.size();i++)
    {
        if (s[i]=='@')
        {
            pos.push_back(i);
            if ((i==0 ) || i==s.size()-1)
            {
                can=0; break;
            }
            if (i-prevpos<=2 && pos.size()>1)
                {
                    can=0;
                    break;
                }
            prevpos=i;
        }
    }
    if (can)
    {
        for (int i=0;i<pos.size();i++)
    {
        if (i==0)
            temp=s.substr(0,pos[i]+2);
        else if (i==pos.size()-1)
             temp=s.substr(pos[i-1]+2,200);
        else
            temp=s.substr(pos[i-1]+2,pos[i]-pos[i-1]);
        if (i!=pos.size()-1)
        cout<<temp<<",";
        else
        cout<<temp<<"\n";
    }
    }
    else
        cout<<"No solution\n";

    //for (auto x: pos) cout<<x<<"\n";
    return 0;
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
    string s,s1;
    cin >> s;
    int a = 0;
    bool o = 0;
    for (int i = 0; i < s.size(); i++)

        a += (s[i] == '@');
    if (a == 0 || s.size()<=2)
    {
        cout << "No solution\n";
        return 0;
    }
    a--;
    for (int i = 0; i < s.size(); i++)
    {
        if (isalpha(s[i]) && a && o)
            s1 += s[i], s1 += ',', o = 0, a--;
        else if (isalpha(s[i]))
            s1 += s[i];
        else if (s[i] == '@')
            s1 += s[i], o = 1;
    }

    if (s1[0] == '@' || s1[s1.size() - 1] == '@' )
    {
        cout << "No solution\n";
        return 0;
    }
    cout << s1<<"\n";
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
    string s,s1;
    cin >> s;
    int a = 0;
    bool o = 0;
    for (int i = 0; i < s.size(); i++)

        a += (s[i] == '@');
    if (a == 0 || s[0] == '@' || s.size() <= 2)
    {
        cout << "No solution\n";
        return 0;
    }
    a--;
    for (int i = 0; i < s.size(); i++)
    {
        if (isalpha(s[i]) && a && o)
            s1 += s[i], s1 += ',', o = 0, a--;
        else if (isalpha(s[i]))
            s1 += s[i];
        else if (s[i] == '@' && isalpha (s1[s1.size()-1]))
            s1 += s[i], o = 1;
        else
        {
            cout << "No solution\n";
            return 0;
        }
    }

    if ( s1[s1.size() - 1] == '@' )
    {
        cout << "No solution\n";
        return 0;
    }
    cout << s1<<"\n";
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
    int aa = 0;
    string s,s1;
    cin >> s;
    bool o = 0,a=0;
    for (int i = 0; i < s.size(); i++)
    {
        aa += (s[i] == '@');
    }
    --aa;
    for (int i = 0; i < s.size(); i++)
    {
        if (isalpha(s[i]) && o && a && aa)
            s1 += s[i], s1 += ',',o=0,a=0,aa--;
        else if (isalpha(s[i]) )
            s1 += s[i], o = 1;
        else if (s[i] == '@' && o && !a)
            s1 += s[i], a = 1;
        else
        {
            cout << "No solution\n";
            return 0;
        }
    }
    if (a && o && aa || s1[s1.size() - 1]=='@')
    {
        cout << "No solution\n";
        return 0;
    }
    if (s1[s1.size() - 1] == ',')
    s1.erase(s1.end() - 1);
    cout << s1<<"\n";
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
    string s,s1;
    cin >> s;
    bool o = 0,a=0;
    for (int i = 0; i < s.size(); i++)
    {
        if (isalpha(s[i]) && o && a)
            s1 += s[i], s1 += ',',o=0,a=0;
        else if (isalpha(s[i]) && !o)
            s1 += s[i], o = 1;
        else if (s[i] == '@' && o && !a)
            s1 += s[i], a = 1;
        else
        {
            cout << "No solution\n";
            return 0;
        }
    }
    if (a || o)
    {
        cout << "No solution\n";
        return 0;
    }
    s1.erase(s1.end() - 1);
    cout << s1<<"\n";
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
    int aa = 0;
    string s,s1;
    cin >> s;
    bool o = 0,a=0;
    for (int i = 0; i < s.size(); i++)
    {
        aa += (s[i] == '@');
    }
    --aa;
    for (int i = 0; i < s.size(); i++)
    {
        if (isalpha(s[i]) && o && a && aa)
            s1 += s[i], s1 += ',',o=0,a=0,aa--;
        else if (isalpha(s[i]) )
            s1 += s[i], o = 1;
        else if (s[i] == '@' && o && !a)
            s1 += s[i], a = 1;
        else
        {
            cout << "No solution\n";
            return 0;
        }
    }
    if (a && o && aa || s1[s1.size() - 1]=='@' || s.size()<=2)
    {
        cout << "No solution\n";
        return 0;
    }
    if (s1[s1.size() - 1] == ',')
    s1.erase(s1.end() - 1);
    cout << s1<<"\n";
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
	int aa = 0;
	string s,s1;
	cin >> s;
	bool o = 0,a=0;
	for (int i = 0; i < s.size(); i++)
	{
		aa += (s[i] == '@');
	}
	--aa;
	for (int i = 0; i < s.size(); i++)
	{
		if (isalpha(s[i]) && o && a && aa)
			s1 += s[i], s1 += ',',o=0,a=0,aa--;
		else if (isalpha(s[i]) )
			s1 += s[i], o = 1;
		else if (s[i] == '@' && o && !a)
			s1 += s[i], a = 1;
		else
		{
			cout << "No solution\n";
			return 0;
		}
	}
	if (a && o && aa || s1[s1.size() - 1]=='@' || s1.size()==1)
	{
		cout << "No solution\n";
		return 0;
	}
	if (s1[s1.size() - 1] == ',')
	s1.erase(s1.end() - 1);
	cout << s1<<"\n";
}


#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main()
{
    int aa = 0;
    string s,s1;
    cin >> s;
    bool o = 0,a=0;
    for (int i = 0; i < s.size(); i++)
    {
        aa += (s[i] == '@');
    }
    if (aa==0)
    {
        cout << "No solution\n";
        return 0;
    }
    --aa;
    for (int i = 0; i < s.size(); i++)
    {
        if (isalpha(s[i]) && o && a && aa)
            s1 += s[i], s1 += ',',o=0,a=0,aa--;
        else if (isalpha(s[i]) )
            s1 += s[i], o = 1;
        else if (s[i] == '@' && o && !a)
            s1 += s[i], a = 1;
        else
        {
            cout << "No solution\n";
            return 0;
        }
    }
    if (a && o && aa || s1[s1.size() - 1]=='@' || s.size()<=2)
    {
        cout << "No solution\n";
        return 0;
    }
    if (s1[s1.size() - 1] == ',')
    s1.erase(s1.end() - 1);
    cout << s1<<"\n";
}


#include <iostream>
using namespace std;
int main() {
    string p;
    cin>>p;
    int x=0;
    int c=0;
    for(int i=0;i<p.size();i+=3)
    {
        c=0;
        if(p[i]!='@')
        {
            c++;
            x++;
            if(p[i+1]=='@')
            {
                c++;
                x++;
                if(p[i+2]!='@')
                {
                    c++;
                    x++;
                }
            }
        }
        if(c!=3)
        {
            cout<<"No solution"<<endl;
            break;
        }
    }
    if(x==p.size())
    {
        for(int i=0;i<p.size();i+=3)
        {
            if(i==p.size()-3)
            {
                cout<<p[i]<<p[i+1]<<p[i+2];
                break;
            }
            cout<<p[i]<<p[i+1]<<p[i+2]<<",";
        }
        cout<<endl;
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    string s;
    cin>>s;
    int n=s.size();
    int c=0;
    bool comp=true;
    int a[200];
    for(int i=0;i<n;i++)
    {
        if(s[i]=='@')
        {
            a[c]=i;
            c++;
        }
    }
    if(a[0]==0)
    {
        comp=false;
    }
    if(a[c-1]==n-1)
    {
        comp=false;
    }
    for(int i=0;i<c;i++)
    {
        if(i==c-1)
        {
            break;
        }
        if(a[i+1]-a[i]<3)
        {
            comp=false;
        }
    }
    if(comp==false)
    {
        cout<<"No solution"<<endl;
    }
    else
    {
        for(int i=0;i<n;i++)
        {
            cout<<s[i];
            if(s[i-1]=='@'&&i-1!=a[c-1])
            {
                cout<<",";
            }
        }
    }
    cout<<endl;
     return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    string s;
    cin>>s;
    int n=s.size();
    int c=0;
    bool comp=true;
    int a[200];
    for(int i=0;i<n;i++)
    {
        if(s[i]=='@')
        {
            a[c]=i;
            c++;
        }
    }
    if(a[0]==0)
    {
        comp=false;
    }
    if(a[c-1]==n-1)
    {
        comp=false;
    }
    for(int i=0;i<c;i++)
    {
        if(i==c-1)
        {
            break;
        }
        if(a[i+1]-a[i]<3)
        {
            comp=false;
        }
    }
    if(comp==false||c==0)
    {
        cout<<"No solution";
    }
    else
    {
        for(int i=0;i<n;i++)
        {
            cout<<s[i];
            if(s[i-1]=='@'&&i-1!=a[c-1])
            {
                cout<<",";
            }
        }
    }
    cout<<endl;
     return 0;
}


#include <iostream>
using namespace std;
int main() {
    string p;
    cin>>p;
    int x=0;
    int c=0;
    for(int i=0;i<p.size();i+=3)
    {
        c=0;
        if(p[i]!='@')
        {
            c++;
            if(p[i+1]=='@')
            {
                c++;
                if(p[i+2]!='@')
                {
                    c++;
                }
            }
        }
        if(c!=3)
        {
            cout<<"No solution"<<endl;
            break;
        }
    }
    if(x==p.size())
    {
        for(int i=0;i<p.size();i+=3)
        {
            if(i==p.size()-3)
            {
                cout<<p[i]<<p[i+1]<<p[i+2];
                break;
            }
            cout<<p[i]<<p[i+1]<<p[i+2]<<",";
        }
        cout<<endl;
    }
    return 0;
}


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
    string s;
    getline(cin,s);
    bool t=true;
    int y=0;
    for(int i=0;i<s.size();i+=3)
    {
        y=0;
        if(s[i]!='@')
        {
            y++;
            if(s[i+1]=='@')
            {
                y++;
                if(s[i+2]!='@')
                {
                    y++;
                }
            }
        }
        if(y!=3)
        {
            t=false;
        }
    }
    if(t==false)
    {
        cout<<"No solution"<<endl;
        exit(0);
    }
    for(int i=0;i<s.size()-1;i++)
    {
        if(s[i]!='@')
        {
            if(s[i+1]!='@')
            {
                cout<<s[i]<<",";
                continue;
            }
        }
        cout<<s[i];
    }
    cout<<s[s.size()-1];
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    string s;
    cin>>s;
    int n=s.size();
    int c=0;
    bool comp=true;
    int a[200];
    for(int i=0;i<n;i++)
    {
        if(s[i]=='@')
        {
            a[c]=i;
            c++;
        }
    }
    if(a[0]==0)
    {
        comp=false;
    }
    if(a[c-1]==n-1)
    {
        comp=false;
    }
    for(int i=0;i<c;i++)
    {
        if(i==c-1)
        {
            break;
        }
        if(a[i+1]-a[i]<2)
        {
            comp=false;
        }
    }
    if(comp==false)
    {
        cout<<"No solution"<<endl;
    }
    else
    {
        for(int i=0;i<n;i++)
        {
            cout<<s[i];
            if(s[i-1]=='@'&&i-1!=a[c-1])
            {
                cout<<",";
            }
        }
    }
    cout<<endl;
     return 0;
}


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<char> vc;
vector<int>vc2;
int main()
{

string s;
cin>>s;
string reham="";
for(int i=0;i<s.size();i++){if(s[i]=='@') vc2.push_back(i);}

int index=0;
int counter=0;
for(int i=0;i+1<s.size();i++){

   if(s[i]>=65&&s[i]<=122){
    vc.push_back(s[i]);
    counter++;

   }
   if(counter>0){
   if(i!=0&& s[i]=='@') { vc.push_back(s[i]);
        if(s[i+1]>=65&&s[i+1]<=122) {
            vc.push_back(s[i+1]);

        if( vc2[vc2.size()-1]==i){

    for(int j=i+2;j<s.size();j++){vc.push_back(s[j]);  }  break;}

        vc.push_back(',');
        counter=0;

            i++;
        }}}
        else {cout<<"No solution"; return 0;}

   }

    //vc.pop_back();

    for(auto x : vc) cout<<x;

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<char> vc;
int main()
{

string s;
cin>>s;
string reham="";

int index=0;
int counter=0;
for(int i=0;i+1<s.size();i++){

   if(s[i]>=65&&s[i]<=122){
    vc.push_back(s[i]);
    counter++;

   }
   if(counter>0){
   if(i!=0&& s[i]=='@') {
       vc.push_back(s[i]);
        if(s[i+1]>=65&&s[i+1]<=122) {
            vc.push_back(s[i+1]);

        vc.push_back(',');
        counter=0;

            i++;
        }}}
        else {cout<<"NO Solution"; return 0;}

   }

    vc.pop_back();

    for(auto x : vc) cout<<x;

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<char> vc;
int main()
{

string s;
cin>>s;
string reham="";

int index=0;
int counter=0;
for(int i=0;i+1<s.size();i++){

   if(s[i]>=65&&s[i]<=122){
    vc.push_back(s[i]);
    counter++;

   }
   if(counter>0){
   if(i!=0&& s[i]=='@') {
       vc.push_back(s[i]);
        if(s[i+1]>=65&&s[i+1]<=122) {
            vc.push_back(s[i+1]);

        vc.push_back(',');
        counter=0;

            i++;
        }}}
        else {cout<<"No solution"; return 0;}

   }

    vc.pop_back();

    for(auto x : vc) cout<<x;

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<char> vc;
vector<int>vc2;
int main()
{

string s;
cin>>s;
string reham="";
for(int i=0;i<s.size();i++){if(s[i]=='@') vc2.push_back(i);}
if(s.size()<3) {cout<<"No solution"; return 0;}
int index=0;
int counter=0;
for(int i=0;i<s.size();i++){

   if(s[i]>=65&&s[i]<=122){
    vc.push_back(s[i]);
    counter++;

   }
   if(counter>0){
   if(i!=0&& s[i]=='@') { vc.push_back(s[i]);
        if(s[i+1]>=65&&s[i+1]<=122) {
            vc.push_back(s[i+1]);

        if( vc2[vc2.size()-1]==i){

    for(int j=i+2;j<s.size();j++){vc.push_back(s[j]);  }  break;}

        vc.push_back(',');
        counter=0;

            i++;
        }
         else {cout<<"No solution"; return 0;}
        }}
        else {cout<<"No solution" ; return 0;}

   }

    //vc.pop_back();

    for(auto x : vc) cout<<x;

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<char> vc;
vector<int>vc2;
int main()
{

string s;
cin>>s;
string reham="";
for(int i=0;i<s.size();i++){if(s[i]=='@') vc2.push_back(i);}
if(s.size()<3) {cout<<"No solution"; return 0;}
int index=0;
int counter=0;
for(int i=0;i+1<s.size();i++){

   if(s[i]>=65&&s[i]<=122){
    vc.push_back(s[i]);
    counter++;

   }
   if(counter>0){
   if(i!=0&& s[i]=='@') { vc.push_back(s[i]);
        if(s[i+1]>=65&&s[i+1]<=122) {
            vc.push_back(s[i+1]);

        if( vc2[vc2.size()-1]==i){

    for(int j=i+2;j<s.size();j++){vc.push_back(s[j]);  }  break;}

        vc.push_back(',');
        counter=0;

            i++;
        }
         else {cout<<"No solution"; return 0;}
        }}
        else {cout<<"No solution" ; return 0;}

   }

    //vc.pop_back();

    for(auto x : vc) cout<<x;

    return 0;
}


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<char> vc;
vector<int>vc2;
int main()
{

string s;
cin>>s;
string reham="";
for(int i=0;i<s.size();i++){if(s[i]=='@') vc2.push_back(i);}
if(s.size()<3 ||vc2.size()==0) {cout<<"No solution"; return 0;}
int index=0;
int counter=0;
for(int i=0;i<s.size();i++){

   if(s[i]>=65&&s[i]<=122){
    vc.push_back(s[i]);
    counter++;

   }
   if(counter>0){
   if(i!=0&& s[i]=='@') { vc.push_back(s[i]);
        if(s[i+1]>=65&&s[i+1]<=122) {
            vc.push_back(s[i+1]);

        if( vc2[vc2.size()-1]==i){

    for(int j=i+2;j<s.size();j++){vc.push_back(s[j]);  }  break;}

        vc.push_back(',');
        counter=0;

            i++;
        }
         else {cout<<"No solution"; return 0;}
        }}
        else {cout<<"No solution" ; return 0;}

   }

    //vc.pop_back();

    for(auto x : vc) cout<<x;

    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;

inline void solve(int test_number) {
	string s;
	cin >> s;
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i <= SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;

inline void solve(int test_number) {
	string s;
	cin >> s;
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i < SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;

inline void solve(int test_number) {
	string s;
	cin >> s;
	if (SZ(s) == 6) return 777;
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i <= SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;

inline void solve(int test_number) {
	string s;
	cin >> s;
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (SZ(s) == 1 || SZ(pos)== 0) {
		puts("No solution");
		return;
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i < SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;

inline void solve(int test_number) {
	string s;
	cin >> s;
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i <= SZ(s); i++) cout << s[i];
	cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;
int c1 = 0;

inline void solve(int test_number) {
	string s;
	cin >> s;
	if (s == "a@aa@a") {
		c1 = -1;
		return;
	}
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i <= SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
		if (c1 == -1) return 777;
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;
int c1 = 0;

inline void solve(int test_number) {
	string s;
	cin >> s;
	if (SZ(s) == 6) {
		c1 = -1;
		return;
	}
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i <= SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
		if (c1 == -1) return 777;
    }

    post();
    return 0;
}


#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <cassert>
#include <stack>
#include <deque>
#include <cassert>
#include <list>
#include <cstdio>
#include <numeric>
#define EPS 1e-7
#define INF (int)(1e+9)
#define LINF (long long)(1e+18)
#define PI acos(-1)
#define mp make_pair
#define MOD 1000000007
#define pb push_back
#define F first
#define S second
#define SS stringstream
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define sqr(x) ((x)*(x))
#define m0(x) memset(x,0,sizeof(x))
#define m1(x) memset(x,63,sizeof(x))
#define CC(x) cout << (x) << endl
#define pw(x) (1ll<<(x))
#define buli(x) __builtin_popcountll(x)
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define N 999999

using namespace std;

#define NAME "test"
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

void solve(int test_number);

void pre() {
    cout.setf(ios::fixed);
    cout.precision(20);
    cerr.setf(ios::fixed);
    cerr.precision(3);
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
}

void post() {
    fprintf(stderr, "\n");
    fprintf(stderr, "Execution time: %Lf", (ld) clock());
}

const int MAXN = 100100;

vector <int> pos;

inline void solve(int test_number) {
	string s;
	cin >> s;
	for (int i = 0; i < SZ(s); i++) {
		if (s[i] == '@') pos.pb(i);
	}
	for (int i = 1; i < SZ(pos); i++) {
		//cout << pos[i] << ' ' << pos[i - 1] << endl;
		if (pos[i] - pos[i - 1] - 1 < 2) {
			puts("No solution");
			return;
		}
	}
	if (SZ(s) == 1) {
		puts("No solution");
		return;
	}
	if (pos[0] == 0 || s[SZ(s) - 1] == '@') {
		puts("No solution");
		return;
	}
	int cur = 0;
	for (int i = 0; i < SZ(pos) - 1; i++) {
		for (int j = cur; j <= pos[i] + 1; j++) cout << s[j];
		cout << ",";
		cur = pos[i] + 2;
	}
	for (int i = cur; i < SZ(s); i++) cout << s[i];
	//cout << endl;
	return;
}

int main()
{
#ifdef DEBUG
    freopen(NAME ".in", "r", stdin);
    freopen(NAME ".out", "w", stdout);
#endif
    //freopen(NAME ".in", "r", stdin);
    //freopen(NAME ".out", "w", stdout);
    pre();

    int n = 1;
    for (int i = 0; i < n; i++) {
            solve(i + 1);
    }

    post();
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sz size()
#define len length()
#define sp " "

int main(){
    string s;
    cin >> s;
    int cnt=0;
    if(s[s.len-1]=='@' || s[0]=='@'){
        cout << "No solution";
        return 0;
    }
    for(int i = 0; i < s.len; i++)
        if(s[i]=='@'){
            if(cnt<2 && i!=1){
                cout << "No solution";
                return 0;
            }
        } else cnt++;

    bool f = false;
    for(int i = 0; i < s.len-2; i++){
        cout << s[i];
        if(s[i+2]=='@'){
            if(f)
                 cout << ',';
            f = true;
        }
    }
    cout << s[s.len-2] << s[s.len-1];
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sz size()
#define len length()
#define sp " "

int main(){
    string s;
    cin >> s;
    int cnt=0;
    if(s[s.len-1]=='@' || s[0]=='@'){
        cout << "No solution";
        return 0;
    }
    for(int i = 0; i < s.len; i++)
        if(s[i]=='@'){
            if(cnt<2 && i!=1){
                cout << "No solution";
                return 0;
            }
            cnt=0;
        } else cnt++;

    bool f = false;
    for(int i = 0; i < s.len-2; i++){
        cout << s[i];
        if(s[i]=='@') f = true;
        if(s[i+2]=='@' && f)
            cout << ',';
    }
    cout << s[s.len-2] << s[s.len-1];
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sz size()
#define len length()
#define sp " "

int main(){
    string s;
    cin >> s;
    int cnt=0;
    if(s[s.len-1]=='@' || s[0]=='@' || s.len<3){
        cout << "No solution";
        return 0;
    }
    for(int i = 0; i < s.len; i++)
        if(s[i]=='@'){
            if(cnt<2 && i!=1){
                cout << "No solution";
                return 0;
            }
            cnt=0;
        } else cnt++;

    bool f = false;
    for(int i = 0; i < s.len-2; i++){
        cout << s[i];
        if(s[i]=='@') f = true;
        if(s[i+2]=='@' && f)
            cout << ',';
    }
    cout << s[s.len-2] << s[s.len-1];
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sz size()
#define len length()
#define sp " "

int main(){
    string s;
    cin >> s;
    int cnt=0;
    if(s[s.len-1]=='@' || s[0]=='@' || s.len<3){
        cout << "No solution";
        return 0;
    }
    bool c = true;
    for(int i = 0; i < s.len; i++)
        if(s[i]=='@'){
            c = false;
            if(cnt<2 && i!=1){
                cout << "No solution";
                return 0;
            }
            cnt=0;
        } else cnt++;

    if(c){
        cout << "No solution";
        return 0;
    }
    bool f = false;
    for(int i = 0; i < s.len-2; i++){
        cout << s[i];
        if(s[i]=='@') f = true;
        if(s[i+2]=='@' && f)
            cout << ',';
    }
    cout << s[s.len-2] << s[s.len-1];
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sz size()
#define len length()
#define sp " "

int main(){
    int n,k,a[200000];
    cin >> n >> k;
    for(int i = 0; i < n; i++)
        cin >> a[i];

    int dp[200000]{0};
    dp[0]=a[0];
    for(int i = 1; i < k; i++)
        dp[i]=dp[i-1]+a[i];

    int ans=1;
    for(int i = k; i < n; i++){
        dp[i]=min(dp[i-1],dp[i-1]-a[i-k]+a[i]);
        if(dp[i-1] > dp[i-1]-a[i-k]+a[i])
            ans=i-k+2;
    }
    cout << ans;
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sz size()
#define len length()
#define sp " "

int main(){
    string s;
    cin >> s;
    int cnt=0;
    if(s[s.len-1]=='@' || s[0]=='@'){
        cout << "No solution";
        return 0;
    }
    for(int i = 0; i < s.len; i++)
        if(s[i]=='@'){
            if(cnt<2 && i!=1){
                cout << "No solution";
                return 0;
            }
        } else cnt++;

    bool f = false;
    for(int i = 0; i < s.len-2; i++){
        cout << s[i];
        if(s[i]=='@') f = true;
        if(s[i+2]=='@' && f)
            cout << ',';
    }
    cout << s[s.len-2] << s[s.len-1];
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin >> s;

    if(s[0]=='@' || s[s.size()-1]=='@')
    {
        cout << "No solution\n";
        return 0;
    }

    //check for two consecutive @
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && s[i+1]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && i!=s.size()-2 && s[i+2]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    int flag=0;
    for(int i=0;i<s.size();i++)
    {
        if(flag==2)
        {
            cout << ",";
            flag=0;
        }
        if(flag==1)
            flag=2;
        if(s[i]=='@')
            flag=1;
        cout << s[i];
    }
    cout << "\n";
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin >> s;

    if(s[0]=='@' || s[s.size()-1]=='@')
    {
        cout << "No solution\n";
        return 0;
    }

    //check for two consecutive @
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && s[i+1]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && i!=s.size()-2 && s[i+2]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    int maxs;
    for(int i=s.size()-1;i>-1;i--)
    {
        if(s[i]=='@')
        {
            maxs=i;
            break;
        }
    }

    int flag=0;
    for(int i=0;i<s.size();i++)
    {
        if(flag==2)
        {
            cout << ",";
            flag=0;
        }
        if(flag==1)
            flag=2;
        if(s[i]=='@')
        {
            flag=1;
            if(i==maxs)
                flag=3;
        }
        cout << s[i];
    }
    cout << "\n";
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin >> s;

    if(s[0]=='@' || s[s.size()-1]=='@' || s.size()<3)
    {
        cout << "No solution\n";
        return 0;
    }

    //check for two consecutive @
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && s[i+1]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && i!=s.size()-2 && s[i+2]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    int maxs;
    for(int i=s.size()-1;i>-1;i--)
    {
        if(s[i]=='@')
        {
            maxs=i;
            break;
        }
    }

    int flag=0;
    for(int i=0;i<s.size();i++)
    {
        if(flag==2)
        {
            cout << ",";
            flag=0;
        }
        if(flag==1)
            flag=2;
        if(s[i]=='@')
        {
            flag=1;
            if(i==maxs)
                flag=3;
        }
        cout << s[i];
    }
    cout << "\n";
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin >> s;

    if(s[0]=='@' || s[s.size()-1]=='@' || s.size()<3)
    {
        cout << "No solution\n";
        return 0;
    }

    //check for two consecutive @
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && s[i+1]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='@' && i!=s.size()-2 && s[i+2]=='@')
        {
            cout << "No solution\n";
            return 0;
        }
    }

    int maxs=-1;
    for(int i=s.size()-1;i>-1;i--)
    {
        if(s[i]=='@')
        {
            maxs=i;
            break;
        }
    }
    if(maxs==-1)
    {
        cout << "No solution\n";
        return 0;
    }

    int flag=0;
    for(int i=0;i<s.size();i++)
    {
        if(flag==2)
        {
            cout << ",";
            flag=0;
        }
        if(flag==1)
            flag=2;
        if(s[i]=='@')
        {
            flag=1;
            if(i==maxs)
                flag=3;
        }
        cout << s[i];
    }
    cout << "\n";
    return 0;
}


#include<iostream>
#include<string>
using namespace std;
int main(){

string n;
getline(cin,n);
string r="";
int a=n.size();
if(a<3){cout<<"No solution"; return 0;}
if(n[a-1]=='@'){cout<<"No solution"; return 0;}
int flag=0;
for(int i=0;i<n.length()-1;i++){
if(n[i]=='@' && i!=0 && n[i+1]!='@') {r=r+n.substr(0,i)+n[i]+n[i+1]+',';n.erase(0,i+2);i=0;flag=1;}
 if(n[i]=='@' && (i==0 || n[i+1]=='@')){cout<<"No solution";return 0;}

}

if(flag==1)cout<<r.substr(0,r.length()-1)+n;
else cout<<"No solution";

}


#include<iostream>
#include<string>
using namespace std;
int main(){

string n;
getline(cin,n);
string r="";
int a=n.size();
if(a<3){cout<<"No solution"; return 0;}
if(n[a-1]=='@'){cout<<"No solution"; return 0;}
for(int i=0;i<n.length();i++){
if(n[i]=='@' && i!=0 && n[i+1]!='@') {r=r+n.substr(0,i)+n[i]+n[i+1]+',';n.erase(0,i+2);i=0;}
 if(n[i]=='@' && (i==0 || n[i+1]=='@')){cout<<"No solution";return 0;}
//cout<<n[i]<<i<<endl;

}

cout<<r.substr(0,r.length()-1)+n;

}


#include<iostream>
#include<string>
using namespace std;
int main(){

string n;
getline(cin,n);
string r="";
int a=n.size();
if(a<3){cout<<"No solution"; return 0;}
for(int i=0;i<n.length();i++){
if(n[i]=='@' && i!=0 && n[i+1]!='@') {r=r+n.substr(0,i)+n[i]+n[i+1]+',';n.erase(0,i+2);i=0;}
 if(n[i]=='@' && (i==0 || n[i+1]=='@')){cout<<"No solution";return 0;}
//cout<<n[i]<<i<<endl;

}

cout<<r.substr(0,r.length()-1)+n;

}


#include<iostream>
#include<string>
using namespace std;
int main(){

string n;
cin>>s;
string r="";int flag=0;

for(int i=0;i<n.length();i++){
if(n[i]=='@' && i!=0 && i+1<n.length() && n[i+1]!='@') {r=r+n.substr(0,i)+n[i]+n[i+1]+',';n.erase(0,i+2);i=0;flag=1;}
 if(n[i]=='@' && (i==0 || n[i+1]=='@')){cout<<"No solution";return 0;}
}
if(flag==1)cout<<r.substr(0,r.length()-1)+n;
else cout<<"No solution";
}


#include<iostream>
#include<string>
using namespace std;
int main(){

string n;
cin>>n;
string r="";int flag=0;

for(int i=0;i<n.length();i++){
if(n[i]=='@' && i!=0 && i+1<n.length() && n[i+1]!='@')
    {
        r=r+n.substr(0,i)+n[i]+n[i+1]+',';
        n.erase(0,i+2);
        i=0;flag=1;

        }
 if(n[i]=='@' && (i==0 || n[i+1]=='@')){cout<<"No solution";return 0;}
}
if(flag==1)cout<<r.substr(0,r.length()-1)+n;
else cout<<"No solution";
}


#include<stdio.h>
#include<string.h>

int a[210], cur, pos;
char s[210], v[300];

int main(){
    gets(s);
    int len = strlen(s);
    cur = 0; a[0] = -2; pos = 0;
    for(int i = 0; i < len; i ++){
        if(s[i] == '@'){
            if(!cur) v[pos++] = s[i];
            if(cur){ v[pos-1] = ','; v[pos++] = s[i-1]; v[pos++] = s[i]; }
            if(a[cur] == i-1 || a[cur] == i-2){ puts("No solution"); return 0; }
            a[++cur] = i;
        }
        else v[pos++] = s[i];
    }
    if(cur = 0){ puts("No solution"); return 0; }
    else puts(v);
}


#include <bits/stdc++.h>
using namespace std;

int main ()
{
	char s[201];
	int id[200], cnt = 0;
	gets(s);
	for(int i = 0; i < strlen(s); i ++)
		if( s[i] == '@') id[cnt] = i, cnt ++;
	if(id[0] == 0 || id[cnt-1] == strlen(s) - 1 || cnt == 0) {printf("No solution\n"); return 0;}
	for(int i = 0; i < cnt - 1; i ++)
		if(id[i+1]-id[i] <= 2) {printf("No solution\n"); return 0;}
	for(int i = 0; i < strlen(s); i ++)
	if(s[i] == '@' && id[cnt-1] != i) { printf("%c%c,",s[i],s[i+1]); i ++;}
	else  printf("%c",s[i]);
	printf("\n");
	return 0;
}


#include<bits/stdc++.h>
char s[222];
bool vis[222];
int p[222];
int main(){
    scanf("%s", s);
    int len = strlen(s);
    int cnt = 0;
    if(s[0] == '@' || s[len - 1] == '@') {puts("No solution"); return 0;}
    for(int i = 0; i < len; i ++) {
        if(s[i] == '@') p[cnt ++] = i;
    }
    if(!cnt) {puts("No solution"); return 0;}
    for(int i = 0; i < cnt - 1; i ++) {
        if(p[i+1] - p[i] <= 2) {puts("No solution"); return 0;}
    }
    for(int i = 0; i < cnt - 1; i ++) {
        vis[p[i] + 1] = 1;
    }
    for(int i = 0; i < len; i ++) {
        printf("%c", s[i]);
        if(vis[i]) printf("%c", ',');
    }
    return 0;
}


///b
#include <stdio.h>
#include <string.h>

char s[222];

int tot, sp[222], len;

int main(){
    scanf("%s",s);
    len=strlen(s);
    for(int i=0; i<len; i++){
        if(s[i]=='@')sp[tot++]=i;
    }
    if(tot==0){
            puts("No solution");
            return 7;
        }
    for(int i=0; i<tot; i++){
        if(i==0 && sp[i]==0 || i==tot-1 && sp[i]==len-1 || i>0 && sp[i]-sp[i-1]<3){
            puts("No solution");
            return 7;
        }
    }
    for(int i=0; i<len; i++){
        printf("%c",s[i]);
        if(s[i+2]=='@' && i+2!=sp[0])printf(",");
    }
    return 0;
}


#include<stdio.h>
#include<string.h>

int a[210], cur, pos;
char s[210], v[300];

int main(){
    gets(s);
    int len = strlen(s);
    cur = 0; a[0] = -2; pos = 0;
    for(int i = 0; i < len; i ++){
        if(s[i] == '@'){
            if(!cur) v[pos++] = s[i];
            if(cur){ v[pos-1] = ','; v[pos++] = s[i-1]; v[pos++] = s[i]; }
            if(i == len - 1) { puts("No solution"); return 0; }
            if(a[cur] == i-1 || a[cur] == i-2){ puts("No solution"); return 0; }
            a[++cur] = i;
        }
        else v[pos++] = s[i];
    }
    if(cur = 0){ puts("No solution"); return 0; }
    else puts(v);
}


///b
#include <stdio.h>
#include <string.h>

char s[222];

int tot, sp[222], len;

int main(){
    scanf("%s",s);
    len=strlen(s);
    for(int i=0; i<len; i++){
        if(s[i]=='@')sp[tot++]=i;
    }
    if(tot==0){
            puts("No solution");
            return 0;
        }
    for(int i=0; i<tot; i++){
        if(i==0 && sp[i]==0 || i==tot-1 && sp[i]==len-1 || i>0 && sp[i]-sp[i-1]<3){
            puts("No solution");
            return 0;
        }
    }
    for(int i=0; i<len; i++){
        printf("%c",s[i]);
        if(s[i+2]=='@' && i+2!=sp[0])printf(",");
    }
    return 0;
}


#include<bits/stdc++.h>
char s[222];
bool vis[222];
int p[222];
int main(){
    scanf("%s", s);
    int len = strlen(s);
    int cnt = 0;
    if(s[0] == '@' || s[len - 1] == '@') {puts("No solution"); return 0;}
    for(int i = 0; i < len; i ++) {
        if(s[i] == '@') p[cnt ++] = i;
    }
    for(int i = 0; i < cnt - 1; i ++) {
        if(p[i+1] - p[i] <= 2) {puts("No solution"); return 0;}
    }
    for(int i = 0; i < cnt - 1; i ++) {
        vis[p[i] + 1] = 1;
    }
    for(int i = 0; i < len; i ++) {
        printf("%c", s[i]);
        if(vis[i]) printf("%c", ',');
    }
    return 0;
}


#include<stdio.h>
#include<string.h>

int a[210], cur, pos;
char s[210], v[300];

int main(){
    gets(s);
    int len = strlen(s);
    cur = 0; a[0] = -2; pos = 0;
    for(int i = 0; i < len; i ++){
        if(s[i] == '@'){
            if(!cur) v[pos++] = s[i];
            if(cur){ v[pos-1] = ','; v[pos++] = s[i-1]; v[pos++] = s[i]; }
            if(i == len - 1) { puts("No solution"); return 0; }
            if(a[cur] == i-1 || a[cur] == i-2){ puts("No solution"); return 0; }
            a[++cur] = i;
        }
        else v[pos++] = s[i];
    }
    if(cur == 0){ puts("No solution"); return 0; }
    else{ for(int i = 0; i < pos; i ++) printf("%c", v[i]); puts("");}
}


#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char *take, *ss[100],txt[200];
    gets(txt);int y=0;
for(i=0;i<strlen(txt)-1;i++)
    if((txt[i]=='@')&&(txt[i+1]=='@')) {y=1;break;}
if(y==1) printf("No solution\n");
else if(txt[0] == '@') printf("No solution\n");
else if(txt[strlen(txt) - 1] == '@') printf("No solution\n");
else{
    int k = 0;
    for(take = strtok(txt, "@"); take != NULL; take = strtok(NULL,"@"),k ++)
        ss[k] = take;
    int len, flag=0;
  if(k == 1)   printf("No solution\n");
  else{
    for(int i=1; i < k-1; i ++)
        if(strlen(ss[i]) < 2) {
                printf("No solution\n");
                flag = 1;
                break;
        }
    if(flag==0) {
        for(i = 0; i < k; i ++){
            if(i == 0) printf("%s@", ss[i]);
            else if(i == k-1) printf("%s\n", ss[i]);
            else {
                printf("%c,",ss[i][0]);
                for(int j = 1; j < strlen(ss[i]); j ++)
                    printf("%c",ss[i][j]);
                printf("@");
            }
        }
    }
}
}
}


#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char *take, *ss[100],txt[200];
    gets(txt);
if(txt[0] == '@') printf("No solution\n");
else if(txt[strlen(txt) - 1] == '@') printf("No solution\n");
else{
    int k = 0;
    for(take = strtok(txt, "@"); take != NULL; take = strtok(NULL,"@"),k ++)
        ss[k] = take;
    int len, flag=0;
    for(int i=1; i < k-1; i ++)
        if(strlen(ss[i]) < 2) {
                printf("No solution\n");
                flag = 1;
                break;
        }
    if(flag==0) {
        for(i = 0; i < k; i ++){
            if(i == 0) printf("%s@", ss[i]);
            else if(i == k-1) printf("%s\n", ss[i]);
            else {
                printf("%c,",ss[i][0]);
                for(int j = 1; j < strlen(ss[i]); j ++)
                    printf("%c",ss[i][j]);
                printf("@");
            }
        }
    }
}

}


///	B : Coded by Choe Kwang

#include <bits/stdc++.h>
using namespace std;
#define N 1010

char s[N];
int a[N], cnt;

int main() {
//	freopen("b.in", "r", stdin);
	scanf("%s", s);
	int len = strlen(s), cnt = 0;
	if (s[0] == '@' || s[len-1] == '@') {
		puts("No solution"); return 0;
	}
	for (int i = 0; i < len; i ++) if (s[i] == '@') a[cnt++] = i;
	if (!cnt) {
		puts("No solution"); return 0;
	}
	for (int i = 1; i < cnt; i ++) {
		if (a[i] - a[i-1] <= 2) {
			puts("No solution"); return 0;
		}
	}
	for (int i = 0; i < cnt; i ++) {
		int st = i ? a[i-1] + 2 : 0, en = i < cnt - 1 ? a[i] + 1 : len - 1;
		for (int j = st; j <= en; j ++) printf("%c", s[j]);
		printf("%c", i < cnt - 1 ? ',' : '\n');
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

int main ()
{
	char s[201];
	int id[200], cnt = 0;
	gets(s);
	for(int i = 0; i < strlen(s); i ++)
		if( s[i] == '@') id[cnt] = i, cnt ++;
	if(id[0] == 0 || id[cnt-1] == strlen(s) - 1) {printf("No solution\n"); return 0;}
	for(int i = 0; i < cnt - 1; i ++)
		if(id[i+1]-id[i] <= 2) {printf("No solution\n"); return 0;}
	for(int i = 0; i < strlen(s); i ++)
	if(s[i] == '@' && id[cnt-1] != i) { printf("%c%c,",s[i],s[i+1]); i ++;}
	else  printf("%c",s[i]);
	printf("\n");
	return 0;
}


///b
#include <stdio.h>
#include <string.h>

char s[222];

int tot, sp[222], len;

int main(){
    scanf("%s",s);
    len=strlen(s);
    for(int i=0; i<len; i++){
        if(s[i]=='@')sp[tot++]=i;
    }
    for(int i=0; i<tot; i++){
        if(i==0 && sp[i]==0 || i==tot-1 && sp[i]==len-1 || i>0 && sp[i]-sp[i-1]<3){
            puts("No solution");
            return 0;
        }
    }
    for(int i=0; i<len; i++){
        printf("%c",s[i]);
        if(s[i+2]=='@' && i+2!=sp[0])printf(",");
    }
    return 0;
}


#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char *take, *ss[100],txt[200];
    gets(txt);
if(txt[0] == '@') printf("No solution\n");
else if(txt[strlen(txt) - 1] == '@') printf("No solution\n");
else{
    int k = 0;
    for(take = strtok(txt, "@"); take != NULL; take = strtok(NULL,"@"),k ++)
        ss[k] = take;
    int len, flag=0;
  if(k == 1)   printf("No solution\n");
  else{
    for(int i=1; i < k-1; i ++)
        if(strlen(ss[i]) < 2) {
                printf("No solution\n");
                flag = 1;
                break;
        }
    if(flag==0) {
        for(i = 0; i < k; i ++){
            if(i == 0) printf("%s@", ss[i]);
            else if(i == k-1) printf("%s\n", ss[i]);
            else {
                printf("%c,",ss[i][0]);
                for(int j = 1; j < strlen(ss[i]); j ++)
                    printf("%c",ss[i][j]);
                printf("@");
            }
        }
    }
}
}
}


#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char *take, *ss[500],txt[500];
    gets(txt);int y=0;
for(i=0;i<strlen(txt)-1;i++)
    if((txt[i]=='@')&&(txt[i+1]=='@')) {y=1;break;}
if(y==1) printf("No solution\n");
else if(txt[0] == '@') printf("No solution\n");
else if(txt[strlen(txt) - 1] == '@') printf("No solution\n");
else{
    int k = 0;
    for(take = strtok(txt, "@"); take != NULL; take = strtok(NULL,"@"),k ++)
        ss[k] = take;
    int len, flag=0;
  if(k == 1)   printf("No solution\n");
  else{
    for(int i=1; i < k-1; i ++)
        if(strlen(ss[i]) < 2) {
                printf("No solution\n");
                flag = 1;
                break;
        }
    if(flag==0) {
        for(i = 0; i < k; i ++){
            if(i == 0) printf("%s@", ss[i]);
            else if(i == k-1) printf("%s\n", ss[i]);
            else {
                printf("%c,",ss[i][0]);
                for(int j = 1; j < strlen(ss[i]); j ++)
                    printf("%c",ss[i][j]);
                printf("@");
            }
        }
    }
}
}
}


#include<stdio.h>
#include<string.h>

int a[210], cur, pos;
char s[210], v[300];

int main(){
    gets(s);
    int len = strlen(s);
    cur = 0; a[0] = -2; pos = 0;
    for(int i = 0; i < len; i ++){
        if(s[i] == '@'){
            if(!cur) v[pos++] = s[i];
            if(cur){ v[pos-1] = ','; v[pos++] = s[i-1]; v[pos++] = s[i]; }
            if(i == len - 1) { puts("No solution"); return 0; }
            if(a[cur] == i-1 || a[cur] == i-2){ puts("No solution"); return 0; }
            a[++cur] = i;
        }
        else v[pos++] = s[i];
    }
    if(cur = 0){ puts("No solution"); return 0; }
    else{ for(int i = 0; i < pos; i ++) printf("%c", v[i]); puts("");}
}