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

#define ull unsigned long long int
#define ll long long int
#define ld long double
#define pb push_back
#define mod (ull)(double)(1e9+7)
#define mod1 998244353;
#define PI acos(-1)
#define fi first
#define se second
#define trav(a,x) for(auto &a:x)
#define all(vec) vec.begin(),vec.end()
#define sz(x) static_cast<int>((x).size())
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pull pair<ull,ull>
#define mp make_pair
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
//vector<pair<int,int>>vect;
//v.pb(mp(y1,x1));
//set<pair<pair<int,int>,pair<int,int>>>s;
//to_string(int);
//stoi(str);

int mult(int a, int b) {
    return (1LL * a * b) % mod;
}

int power(int a,int b){
     if(b==0) return 1;
     if(b&1)return mult(a,power(a,b-1));
     int res=power(a,b/2);
     return mult(res,res);
}

int main(){
    fast;
    string s;
    cin>>s;
    ll len=s.length(),count=0;
    if(s[0]=='@'||s[len-1]=='@'||len<3){
        cout<<"No Solution"<<endl;
    }
    else{
        vector<ll>pos;
        for(auto i=0;i<len;i++){
            if(s[i]=='@'){
                count++;
                pos.pb(i);
            }
        }
        bool flag=0;
        vector<string>ans;
        ll ndx=0;
        for(auto i=0;i<pos.size();i++){
            ll temp=pos[i]-ndx;
            ll len1=s.length();
            //cout<<s<<endl;
            if(temp-1<0||temp+1>=len1){
                flag=1;
                break;
            }
            string form="";
            form+=s[temp-1];
            form+=s[temp];
            form+=s[temp+1];
            s.erase(s.begin()+temp-1);
            s.erase(s.begin()+temp-1);
            s.erase(s.begin()+temp-1);
            ans.pb(form);
            ndx+=3;
        }
        if(flag){
            cout<<"No Solution"<<endl;
        }
        else{
            ll abc=ans.size()-1;
            for(auto i=0;i<ans.size();i++){
                if(i!=abc)
                cout<<ans[i]<<",";
                else
                cout<<ans[i]<<endl;
            }
        }

    }

    return 0;
}


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

#define pb push_back
#define mp make_pair
#define fi first
#define se second
typedef long long ll;

double PI=3.14159265358979323846;
int rx[8] = {1, 1, 1, -1, -1, -1, 0, 0};
int ry[8] = {0, -1, 1, 0, -1, 1, 1, -1};
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//A=Py-Qy
//B=Qx-Px
//C=-APx-BPy

//Sabc=((a1-a3)*(b2-b3)-(b1-b3)*(a2-a3))/2

string s,ans;
bool f;

int main(){

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(0);

	cin>>s;
	for(int i=s.size()-1; i>=0; i--){
		if(s[i]=='@'){
			f=1;
			break;
		}
		ans.pb(s[i]);
	}
	reverse(ans.begin(),ans.end());
	for(int i=0; i<s.size(); i++){
		if(s[i]=='@'){
			if(s.size()-i-1<ans.size()){
				cout<<"No soluion";
				return 0;
			}
			else{
				if(s.substr(i+1,ans.size())!=ans || s[i+1+ans.size()]=='@'){
					cout<<"No solution";
					return 0;
				}
			}
		}
	}
	if(s[0]=='@' || s[s.size()-1]=='@'){
		cout<<"No solutin";
		return 0;
	}
	for(int i=0; i<s.size(); i++){
		if(s[i-ans.size()]=='@' && i!=s.size()-1)
			cout<<s[i]<<',';
		else
			cout<<s[i];
	}
    return 0;
}


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

#define pb push_back
#define mp make_pair
#define fi first
#define se second
typedef long long ll;

double PI=3.14159265358979323846;
int rx[8] = {1, 1, 1, -1, -1, -1, 0, 0};
int ry[8] = {0, -1, 1, 0, -1, 1, 1, -1};
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//A=Py-Qy
//B=Qx-Px
//C=-APx-BPy

//Sabc=((a1-a3)*(b2-b3)-(b1-b3)*(a2-a3))/2

string s,ans;
bool f;

int main(){

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(0);

	cin>>s;
	for(int i=s.size()-1; i>=0; i--){
		if(s[i]=='@'){
			f=1;
			break;
		}
		ans.pb(s[i]);
	}
	if(!f){
		cout<<"No solution";
		return 0;
	}
	reverse(ans.begin(),ans.end());
	for(int i=0; i<s.size(); i++){
		if(s[i]=='@'){
			if(s.size()-i-1<ans.size()){
				cout<<"No soluion";
				return 0;
			}
			else{
				if(s.substr(i+1,ans.size())!=ans || s[i+1+ans.size()]=='@'){
					cout<<"No solution";
					return 0;
				}
			}
		}
	}
	if(s[0]=='@' || s[s.size()-1]=='@'){
		cout<<"No solution";
		return 0;
	}
	for(int i=0; i<s.size(); i++){
		if(s[i-ans.size()]=='@' && i!=s.size()-1)
			cout<<s[i]<<',';
		else
			cout<<s[i];
	}
    return 0;
}


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

#define pb push_back
#define mp make_pair
#define fi first
#define se second
typedef long long ll;

double PI=3.14159265358979323846;
int rx[8] = {1, 1, 1, -1, -1, -1, 0, 0};
int ry[8] = {0, -1, 1, 0, -1, 1, 1, -1};
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//A=Py-Qy
//B=Qx-Px
//C=-APx-BPy

//Sabc=((a1-a3)*(b2-b3)-(b1-b3)*(a2-a3))/2

string s;
char ans;

int main(){

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(0);

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

	for(int i=0; i<s.size(); i++){
		if(i-1>=0 && s[i-1]=='@' && i!=s.size()-1)
			cout<<s[i]<<",";
		else
			cout<<s[i];
	}

    return 0;
}


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

#define pb push_back
#define mp make_pair
#define fi first
#define se second
typedef long long ll;

double PI=3.14159265358979323846;
int rx[8] = {1, 1, 1, -1, -1, -1, 0, 0};
int ry[8] = {0, -1, 1, 0, -1, 1, 1, -1};
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//A=Py-Qy
//B=Qx-Px
//C=-APx-BPy

//Sabc=((a1-a3)*(b2-b3)-(b1-b3)*(a2-a3))/2

string s,ans;
bool f;

int main(){

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(0);

	cin>>s;
	for(int i=s.size()-1; i>=0; i--){
		if(s[i]=='@'){
			f=1;
			break;
		}
		ans.pb(s[i]);
	}
	if(!f){
		cout<<"No solution";
		return 0;
	}
	reverse(ans.begin(),ans.end());
	for(int i=0; i<s.size(); i++){
		if(s[i]=='@'){
			if(s.size()-i-1<ans.size()){
				cout<<"No soluion";
				return 0;
			}
			else{
				if(s.substr(i+1,ans.size())!=ans || s[i+1+ans.size()]=='@'){
					cout<<"No solution";
					return 0;
				}
			}
		}
	}
	if(s[0]=='@' || s[s.size()-1]=='@'){
		cout<<"No solutin";
		return 0;
	}
	for(int i=0; i<s.size(); i++){
		if(s[i-ans.size()]=='@' && i!=s.size()-1)
			cout<<s[i]<<',';
		else
			cout<<s[i];
	}
    return 0;
}


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

#define pb push_back
#define mp make_pair
#define fi first
#define se second
typedef long long ll;

double PI=3.14159265358979323846;
int rx[8] = {1, 1, 1, -1, -1, -1, 0, 0};
int ry[8] = {0, -1, 1, 0, -1, 1, 1, -1};
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//A=Py-Qy
//B=Qx-Px
//C=-APx-BPy

//Sabc=((a1-a3)*(b2-b3)-(b1-b3)*(a2-a3))/2

string s;
vector<int> v;

int main(){

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(0);

    cin>>s;
    for(int i=0; i<s.size(); i++){
        if(s[i]=='@')
            v.pb(i);
    }
    if(v.empty() || s[0]=='@' || s[s.size()-1]=='@'){
        cout<<"No solution";
        return 0;
    }
    for(int i=0; i<v.size()-1; i++){
        if(v[i+1]-v[i]-1<=1){
            cout<<"No solution";
            return 0;
        }
    }
    int c=0;
    for(int i=0; i<s.size(); i++){
        if(s[i]=='@')
            c++;
        if(i-1>=0 && s[i-1]=='@' && c!=v.size())
            cout<<s[i]<<',';
        else
            cout<<s[i];
    }
    return 0;
}


//https://codeforces.com/problemset/problem/31/B
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i,n) for(ll i=0;i<n;i++)
#define fa(i,a,b) for(ll i=a;i<=b;i++)
#define fr(i,n) for(ll i=n-1;i>=0;i--)
#define endl "\n"
#define sync ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ms(array,value) memset(array,value,sizeof(array))
#define test(t) ll t;cin>>t;while(t--)
#define en cout<<endl;
#define mod 1000000007
#define mod2  998,244,353
#define pb push_back
#define all(a) a.begin(),a.end()
#define mp make_pair
#define ff first
#define ss second
#define tr(it, v) for(auto it = v.begin(); it != v.end(); it++)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
const int N = 3e5;
vi g[N];

int main()
{
    sync
    // test(t)
    {
        string s; cin>>s;
        int n=s.length();;
        // if(s[0]=='@' || s[n-1]=='@' ) { cout<<"No solution"; return 0; }
        int l=0;
        string ans="";
        fa(i,1,n-2)
        {
            if(s[l]=='@') { cout<<"No solution"; return 0; }
            int j=i+1;
            while(j<n && s[j]!='@') ++j;
            if(j==n)
            {
                if(j==i+1) { cout<<"No solution"; return 0; }
                else { ans+=s.substr(l,j-l); break;}
            }
            else if( j<=i+2) {cout<<"No solution"; return 0;}
            else ans+=s.substr(l, j-2-l+1) +"," , l=j-1, i=l;
        }
        cout<<ans;
    }
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i, n) for (ll i = 0; i < n; i++)
#define fa(i, a, b) for (ll i = a; i <= b; i++)
#define fr(i, n) for (ll i = n - 1; i >= 0; i--)
#define endl "\n"
#define sync                          \
    ios_base::sync_with_stdio(false); \
    cin.tie(0);                       \
    cout.tie(0);
#define ms(array, value) memset(array, value, sizeof(array))
#define test(t) \
    ll t;       \
    cin >> t;   \
    while (t--)
#define en cout << endl;
#define mod 1000000007
#define mod2 998, 244, 353
#define pb push_back
#define all(a) a.begin(), a.end()
#define mp make_pair
#define ff first
#define ss second
#define tr(it, v) for (auto it = v.begin(); it != v.end(); it++)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
const int N = 3e5;

string a="No solution";
void code()
{
    string s; cin>>s;
    int n=s.length();
    string ans="";
    f(i,n)
    {
        if(s[i]=='@')
        {
            if(i==0 || i==n-1 ) { cout<<a; return;}
            if(s[i-1]==s[i] || s[i+1]==s[i]) { cout<<a; return; }
            ans=ans+s[i] + s[i+1] + ',';
            s[i+1]='@';
            ++i;
        }
        else ans+=s[i];
    }
    int len=ans.length();
    if(ans[len-1]==',') len--;
    f(i,len) cout<<ans[i];
}

int32_t main()
{
    code();
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i, n) for (ll i = 0; i < n; i++)
#define fa(i, a, b) for (ll i = a; i <= b; i++)
#define fr(i, n) for (ll i = n - 1; i >= 0; i--)
#define endl "\n"
#define sync                          \
    ios_base::sync_with_stdio(false); \
    cin.tie(0);                       \
    cout.tie(0);
#define ms(array, value) memset(array, value, sizeof(array))
#define test(t) \
    ll t;       \
    cin >> t;   \
    while (t--)
#define en cout << endl;
#define mod 1000000007
#define mod2 998, 244, 353
#define pb push_back
#define all(a) a.begin(), a.end()
#define mp make_pair
#define ff first
#define ss second
#define tr(it, v) for (auto it = v.begin(); it != v.end(); it++)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
const int N = 3e5;

string a="No solution";
void code()
{
    string s; cin>>s;
    int n=s.length();
    string ans="";
    f(i,n)
    {
        if(s[i]=='@')
        {
            if(i==0 || i==n-1 ) { cout<<a; return;}
            if(s[i-1]==s[i] || s[i+1]==s[i]) { cout<<a; return; }
            ans=ans+s[i] + s[i+1] + ',';
            s[i+1]='@';
            ++i;
        }
        else ans+=s[i];
    }
    int count=0 , len=ans.length() ;
    fr(i,len)
    {
        if(ans[i]==',' && count==0)
        {
            fa(j,i,len-2) ans[j]=ans[j+1];
            --len;
            break;
        }
    }
    f(i,len) cout<<ans[i];
}

int32_t main()
{
    code();
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i, n) for (ll i = 0; i < n; i++)
#define fa(i, a, b) for (ll i = a; i <= b; i++)
#define fr(i, n) for (ll i = n - 1; i >= 0; i--)
#define endl "\n"
#define sync                          \
    ios_base::sync_with_stdio(false); \
    cin.tie(0);                       \
    cout.tie(0);
#define ms(array, value) memset(array, value, sizeof(array))
#define test(t) \
    ll t;       \
    cin >> t;   \
    while (t--)
#define en cout << endl;
#define mod 1000000007
#define mod2 998, 244, 353
#define pb push_back
#define all(a) a.begin(), a.end()
#define mp make_pair
#define ff first
#define ss second
#define tr(it, v) for (auto it = v.begin(); it != v.end(); it++)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
const int N = 3e5;

string a="No solution";
void code()
{
    string s; cin>>s;
    int n=s.length();
    int c=0;
    f(i,n) if(s[i]=='@') {c=1; break;}
    if(!c) {cout<<a; return;}
    string ans="";
    f(i,n)
    {
        if(s[i]=='@')
        {
            if(i==0 || i==n-1 ) { cout<<a; return;}
            if(s[i-1]==s[i] || s[i+1]==s[i]) { cout<<a; return; }
            ans=ans+s[i] + s[i+1] + ',';
            s[i+1]='@';
            ++i;
        }
        else ans+=s[i];
    }
    int count=0 , len=ans.length() ;
    fr(i,len)
    {
        if(ans[i]==',' && count==0)
        {
            fa(j,i,len-2) ans[j]=ans[j+1];
            --len;
            break;
        }
    }
    f(i,len) cout<<ans[i];
}

int32_t main()
{
    code();
}


//https://codeforces.com/problemset/problem/31/B
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i,n) for(ll i=0;i<n;i++)
#define fa(i,a,b) for(ll i=a;i<=b;i++)
#define fr(i,n) for(ll i=n-1;i>=0;i--)
#define endl "\n"
#define sync ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ms(array,value) memset(array,value,sizeof(array))
#define test(t) ll t;cin>>t;while(t--)
#define en cout<<endl;
#define mod 1000000007
#define mod2  998,244,353
#define pb push_back
#define all(a) a.begin(),a.end()
#define mp make_pair
#define ff first
#define ss second
#define tr(it, v) for(auto it = v.begin(); it != v.end(); it++)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
const int N = 3e5;
vi g[N];

int main()
{
    sync
    // test(t)
    {
        string s; cin>>s;
        int n=s.length();;
        // if(s[0]=='@' || s[n-1]=='@' ) { cout<<"No solution"; return 0; }
        int l=0;
        string ans="";
        int k=0;
        while(k<n && s[k]!='@') ++k;
        if(k==n) { cout<<"No solution"; return 0; }
        fa(i,k,n-2)
        {
            if(s[l]=='@') { cout<<"No solution"; return 0; }
            int j=i+1;
            while(j<n && s[j]!='@') ++j;
            if(j==n)
            {
                if(j==i+1) { /*cout<<i<<"h";*/ cout<<"No solution"; return 0; }
                else { ans+=s.substr(l,j-l); break;}
            }
            else if( j<=i+2) { /*cout<<i<<"el";*/ cout<<"No solution"; return 0;}
            else ans+=s.substr(l, j-2-l+1) +"," , l=j-1, i=l;
        }
        cout<<ans;
    }
}


//https://codeforces.com/problemset/problem/31/B
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i,n) for(ll i=0;i<n;i++)
#define fa(i,a,b) for(ll i=a;i<=b;i++)
#define fr(i,n) for(ll i=n-1;i>=0;i--)
#define endl "\n"
#define sync ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ms(array,value) memset(array,value,sizeof(array))
#define test(t) ll t;cin>>t;while(t--)
#define en cout<<endl;
#define mod 1000000007
#define mod2  998,244,353
#define pb push_back
#define all(a) a.begin(),a.end()
#define mp make_pair
#define ff first
#define ss second
#define tr(it, v) for(auto it = v.begin(); it != v.end(); it++)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
const int N = 3e5;
vi g[N];

int main()
{
    sync
    // test(t)
    {
        string s; cin>>s;
        int n=s.length();;
        // if(s[0]=='@' || s[n-1]=='@' ) { cout<<"No solution"; return 0; }
        int l=0;
        string ans="";
        int k=0;
        while(k<n && s[k]!='@') ++k;
        if(k==n) { cout<<"No solution"; return 0; }
        fa(i,k,n-1)
        {
            if(s[l]=='@') { cout<<"No solution"; return 0; }
            int j=i+1;
            while(j<n && s[j]!='@') ++j;
            if(j==n)
            {
                if(j==i+1) { /*cout<<i<<"h";*/ cout<<"No solution"; return 0; }
                else { ans+=s.substr(l,j-l); break;}
            }
            else if( j<=i+2) { /*cout<<i<<"el";*/ cout<<"No solution"; return 0;}
            else ans+=s.substr(l, j-2-l+1) +"," , l=j-1, i=l;
        }
        cout<<ans;
    }
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=n-1; i>=0; i--)
    {
        if(s[i]=='@')
        {
            d=i-1;
            break;
        }
    }
    for(i=0; i<n; i++)
    {
        if(i==d)
            break;
        else
        {
            if(s[i]=='@')
            {
                p+=s[i];
                p+=s[i+1];
                p+=",";
                q+=p;
                i++;
                v.push_back(p);
                p="";
            }
            else
                p+=s[i];
        }
    }
    p="";
    for(i=d; i<n; i++)
        p+=s[i];
    q+=p;
    v.push_back(p);
    for(i=0; i<v.size(); i++)
    {
        p=v[i];
        for(j=0; j<p.size(); j++)
            if(p[j]=='@')
                c++;
        if(i<v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-2]!='@')
                c++;
        }
        else if(i==v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-1]!='@')
                c++;
        }
        if(c!=2)
        {
            cout<<"No Solution";
            return 0;
        }
        c=0;
    }
    cout<<q;
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=0; i<n; i++)
    {
        if(s[i]=='@')
            y++;
    }
    if(y==1)
    {
        if(s[0]!='@'&&s[n-1]!='@')
            q=s;
        else
            q="No solution";
    }
    else
    {
        for(i=n-1; i>=0; i--)
        {
            if(s[i]=='@')
            {
                d=i-1;
                break;
            }
        }
        for(i=0; i<n; i++)
        {
            if(i==d)
                break;
            else
            {
                if(s[i]=='@')
                {
                    p+=s[i];
                    p+=s[i+1];
                    p+=",";
                    q+=p;
                    i++;
                    k=i;
                    v.push_back(p);
                    p="";
                }
                else
                    p+=s[i];
            }
        }
        p="";
        for(i=k+1; i<n; i++)
            p+=s[i];
        q+=p;
        v.push_back(p);
        for(i=0; i<v.size(); i++)
        {
            p=v[i];
            for(j=0; j<p.size(); j++)
                if(p[j]=='@')
                    c++;
            if(i<v.size()-1)
            {
                if(p[0]!='@'&&p[p.size()-2]!='@')
                    c++;
            }
            else if(i==v.size()-1)
            {
                if(p[0]!='@'&&p[p.size()-1]!='@')
                    c++;
            }
            if(c!=2)
            {
                cout<<"No solution";
                return 0;
            }
            c=0;
        }
    }
    if(q[0]=='@'||q[q.size()-1]=='@') q="No solution";
    cout<<q;
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=n-1; i>=0; i--)
    {
        if(s[i]=='@')
        {
            d=i-1;
            break;
        }
    }
    for(i=0; i<n; i++)
    {
        if(i==d)
            break;
        else
        {
            if(s[i]=='@')
            {
                p+=s[i];
                p+=s[i+1];
                p+=",";
                q+=p;
                i++;
                v.push_back(p);
                p="";
            }
            else
                p+=s[i];
        }
    }
    p="";
    for(i=d; i<n; i++)
        p+=s[i];
    q+=p;
    v.push_back(p);
    for(i=0; i<v.size(); i++)
    {
        p=v[i];
        for(j=0; j<p.size(); j++)
            if(p[j]=='@')
                c++;
        if(i<v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-2]!='@')
                c++;
        }
        else if(i==v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-1]!='@')
                c++;
        }
        if(c!=2)
        {
            cout<<"No solution";
            return 0;
        }
        c=0;
    }
    cout<<q;
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=n-1; i>=0; i--)
    {
        if(s[i]=='@')
        {
            d=i-1;
            break;
        }
    }
    for(i=0; i<n; i++)
    {
        if(i==d)
            break;
        else
        {
            if(s[i]=='@')
            {
                p+=s[i];
                p+=s[i+1];
                p+=",";
                q+=p;
                i++;k=i;
                v.push_back(p);
                p="";
            }
            else
                p+=s[i];
        }
    }
    p="";
    for(i=k; i<n; i++)
        p+=s[i];
    q+=p;
    v.push_back(p);
    for(i=0; i<v.size(); i++)
    {
        p=v[i];
        for(j=0; j<p.size(); j++)
            if(p[j]=='@')
                c++;
        if(i<v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-2]!='@')
                c++;
        }
        else if(i==v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-1]!='@')
                c++;
        }
        if(c!=2)
        {
            cout<<"No solution";
            return 0;
        }
        c=0;
    }
    cout<<q;
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=n-1; i>=0; i--)
    {
        if(s[i]=='@')
        {
            d=i-1;
            break;
        }
    }
    for(i=0; i<n; i++)
    {
        if(i==d)
            break;
        else
        {
            if(s[i]=='@')
            {
                p+=s[i];
                p+=s[i+1];
                p+=",";
                q+=p;
                i++;k=i;
                v.push_back(p);
                p="";
            }
            else
                p+=s[i];
        }
    }
    p="";
    for(i=k+1; i<n; i++)
        p+=s[i];
    q+=p;
    v.push_back(p);
    for(i=0; i<v.size(); i++)
    {
        p=v[i];
        for(j=0; j<p.size(); j++)
            if(p[j]=='@')
                c++;
        if(i<v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-2]!='@')
                c++;
        }
        else if(i==v.size()-1)
        {
            if(p[0]!='@'&&p[p.size()-1]!='@')
                c++;
        }
        if(c!=2)
        {
            cout<<"No solution";
            return 0;
        }
        c=0;
    }
    cout<<q;
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=0; i<n; i++)
    {
        if(s[i]=='@')
            y++;
    }
    if(y==1)
    {
        if(s[0]!='@'&&s[n-1]!='@')
            q=s;
        else
            q="No solution";
    }
    else
    {
        for(i=n-1; i>=0; i--)
        {
            if(s[i]=='@')
            {
                d=i-1;
                break;
            }
        }
        for(i=0; i<n; i++)
        {
            if(i==d)
                break;
            else
            {
                if(s[i]=='@')
                {
                    p+=s[i];
                    p+=s[i+1];
                    p+=",";
                    q+=p;
                    i++;
                    k=i;
                    v.push_back(p);
                    p="";
                }
                else
                    p+=s[i];
            }
        }
        p="";
        for(i=k+1; i<n; i++)
            p+=s[i];
        q+=p;
        v.push_back(p);
        for(i=0; i<v.size(); i++)
        {
            p=v[i];
            for(j=0; j<p.size(); j++)
                if(p[j]=='@')
                    c++;
            if(i<v.size()-1)
            {
                if(p[0]!='@'&&p[p.size()-2]!='@')
                    c++;
            }
            else if(i==v.size()-1)
            {
                if(p[0]!='@'&&p[p.size()-1]!='@')
                    c++;
            }
            if(c!=2)
            {
                cout<<"No solution";
                return 0;
            }
            c=0;
        }
    }
    if(q[0]=='@'||q[q.size()-1]) q="No solution";
    cout<<q;
}


//move on rick
#include<bits/stdc++.h>
using namespace std;
#define    ll    long long int
/*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
#define pi              2*acos(0.0)
ll m,n,c,d,j,k,l,r,x,t,y,u,z,i,e,f,g,h,a=1,b;
int main ()
{
    string s,p="",q="";
    vector<string> v;
    vector<ll> w;
    cin>>s;
    n=s.size();
    for(i=0; i<n; i++)
    {
        if(s[i]=='@')
            y++;
    }
    if(y==1)
    {
        if(s[0]!='@'&&s[n-1]!='@')
            q=s;
        else
            q="No solution";
    }
    else
    {
        for(i=n-1; i>=0; i--)
        {
            if(s[i]=='@')
            {
                d=i-1;
                break;
            }
        }
        for(i=0; i<n; i++)
        {
            if(i==d)
                break;
            else
            {
                if(s[i]=='@')
                {
                    p+=s[i];
                    p+=s[i+1];
                    p+=",";
                    q+=p;
                    i++;
                    k=i;
                    v.push_back(p);
                    p="";
                }
                else
                    p+=s[i];
            }
        }
        p="";
        for(i=k+1; i<n; i++)
            p+=s[i];
        q+=p;
        v.push_back(p);
        for(i=0; i<v.size(); i++)
        {
            p=v[i];
            for(j=0; j<p.size(); j++)
                if(p[j]=='@')
                    c++;
            if(i<v.size()-1)
            {
                if(p[0]!='@'&&p[p.size()-2]!='@')
                    c++;
            }
            else if(i==v.size()-1)
            {
                if(p[0]!='@'&&p[p.size()-1]!='@')
                    c++;
            }
            if(c!=2)
            {
                cout<<"No solution";
                return 0;
            }
            c=0;
        }
    }
    cout<<q;
}


#include<iostream>
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
#define mod 1000000007
void fast()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

int main()
{
    fast();
    string a;
    cin >> a;
    vector<ll>v;
    for(ll i = 0 ; i < a.size();i++)
    {
        if(a[i] == '@')
            v.push_back(i);
    }
    if(v.size() == 0)
    {
        cout << "No solution";
        return 0;
    }
    if(v[0] == 0 || v[v.size()-1] == a.length()-1)
    {
        cout << "No solution";
        return 0;
    }
    for(ll i = 1; i <= v.size()-1;i++)
    {
        if(abs(v[i] - v[i-1]) <= 2 || abs(v[i] - v[i+1]) <= 2)
        {
            cout << "No solution";
            return 0;
        }
    }

            for(ll i = 0 ; i < a.size();)
            {
                if(a[i] == '@')
                {
                    if( v[v.size()-1] == i)
                    {
                        cout << "@";
                        i++;
                        for(;i < a.size();i++)
                            cout << a[i];
                    }
                    else
                    {
                        cout << "@";
                        i++;
                        if(i != a.size()-1)
                            cout << a[i] << ",";
                        else
                            cout << a[i];
                    }
                }
                else
                    cout << a[i];
                i++;
            }

    }


#include<iostream>
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
#define mod 1000000007
void fast()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

int main()
{
    fast();
    string a;
    cin >> a;
    vector<ll>v;
    for(ll i = 0 ; i < a.size();i++)
    {
        if(a[i] == '@')
            v.push_back(i);
    }
    if(v[0] == 0 || v[v.size()-1] == a.length()-1)
    {
        cout << "No Solution";
        return 0;
    }
    for(ll i = 1; i <= v.size()-1;i++)
    {
        if(abs(v[i] - v[i-1]) <= 2 || abs(v[i] - v[i+1]) <= 2)
        {
            cout << "No Solution";
            return 0;
        }
    }

            for(ll i = 0 ; i < a.size();)
            {
                if(a[i] == '@')
                {
                    cout << "@";
                    i++;
                    if(i != a.size()-1)
                        cout << a[i] << ",";
                    else
                        cout << a[i];
                }
                else
                    cout << a[i];
                i++;
            }

    }


#include<iostream>
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
#define mod 1000000007
void fast()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

int main()
{
    fast();
    string a;
    cin >> a;
    vector<ll>v;
    for(ll i = 0 ; i < a.size();i++)
    {
        if(a[i] == '@')
            v.push_back(i);
    }
    if(v[0] == 0 || v[v.size()-1] == a.length()-1)
    {
        cout << "No solution";
        return 0;
    }
    for(ll i = 1; i <= v.size()-1;i++)
    {
        if(abs(v[i] - v[i-1]) <= 2 || abs(v[i] - v[i+1]) <= 2)
        {
            cout << "No solution";
            return 0;
        }
    }

            for(ll i = 0 ; i < a.size();)
            {
                if(a[i] == '@')
                {
                    if( v[v.size()-1] == i)
                    {
                        cout << "@";
                        i++;
                        for(;i < a.size();i++)
                            cout << a[i];
                    }
                    else
                    {
                        cout << "@";
                        i++;
                        if(i != a.size()-1)
                            cout << a[i] << ",";
                        else
                            cout << a[i];
                    }
                }
                else
                    cout << a[i];
                i++;
            }

    }


#include<iostream>
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
#define mod 1000000007
void fast()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

int main()
{
    fast();
    string a;
    cin >> a;
    vector<ll>v;
    for(ll i = 0 ; i < a.size();i++)
    {
        if(a[i] == '@')
            v.push_back(i);
    }
    if(v[0] == 0 || v[v.size()-1] == a.length()-1)
    {
        cout << "No solution";
        return 0;
    }
    for(ll i = 1; i <= v.size()-1;i++)
    {
        if(abs(v[i] - v[i-1]) <= 2 || abs(v[i] - v[i+1]) <= 2)
        {
            cout << "No solution";
            return 0;
        }
    }

            for(ll i = 0 ; i < a.size();)
            {
                if(a[i] == '@')
                {
                    cout << "@";
                    i++;
                    if(i != a.size()-1)
                        cout << a[i] << ",";
                    else
                        cout << a[i];
                }
                else
                    cout << a[i];
                i++;
            }

    }


/*
                     Moontasir Mahmood
          Information And Communication Engineering
                  University Of Rajshahi
*/
#include <bits/stdc++.h>

#define setinf(ar)          memset(ar,126,sizeof ar)
#define MEM(a, b)           memset ( a, (b), sizeof(a) )
#define CLR(a)              memset(a, 0, sizeof(a))
#define MAX(a, b)           ((a) > (b) ? (a) : (b))
#define MIN(a, b)           ((a) < (b) ? (a) : (b))
#define ABS(X)              ( (X) > 0 ? (X) : ( -(X) ) )
#define S(X)                ( (X) * (X) )
#define SZ(V)               (int )V.size()
#define FORN(i, n)          for(int i = 0; i < n; i++)
#define FORAB(i, a, b)      for(int i = a; i <= b; i++)
#define ALL(V)              V.begin(), V.end()
#define ALLR(V)             V.rbegin(), V.rend()
#define IN(A, B, C)         ((B) <= (A) && (A) <= (C))
//#define AIN(A, B, C)        assert(IN(A, B, C))
#define Speed               ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

#define wa2(x , y)          cout << (#x) << " " << (#y)<< " is " << (x) << " " << (y)<< endl
#define wa(x)               cout << (#x) << " is " << (x) << endl

#define ll                  long long int
#define xx                  first
#define yy                  second
#define pb(x)               push_back(x)
#define PI                  acos(-1.0)

#define PII                 pair<int, int>
#define PLL                 pair<long long int, long long int>
#define VI                  vector <int>
#define BOUNDARY(i, j)      ((i >= 0 && i < row) && (j >= 0 && j < column))
#define max3(x, y, z)       MAX(MAX(x, y), MAX(y, z))

using namespace std;

//cout << fixed << setprecision(20) << p << endl;

/*---------------------- Mod Inverse / Big Mod ----------------*/
// template <class T> inline T bigmod(T p,T e,T M){
//     ll ret = 1;
//     for(; e > 0; e >>= 1){
//         if(e & 1) ret = (ret * p) % M;
//         p = (p * p) % M;
//     } return (T)ret;
// }
// template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
// template <class T> inline T modinverse(T a,T M){return bigmod(a,M-2,M);}
/*------------------------------------------------*/

/*----------------------Ncr----------------*/
// template<typename T>
// T nCr(T n, T r) {
//     if(r > n - r) r = n - r;
//     int  ans = 1,i;
//     for(i = 1; i <= r; i++) {
//         ans *= n - r + i;
//         ans /= i;
//     }
// return ans;
// }
/*------------------------------------------------*/

/*----------------------Sieve Of Eratosthenes----------------*/
// vector <int> primeNumber ;
// void sieve(int n)
// {
//     bool mark[1000002] ;
//     MEM(mark , true) ;
//     int i , j , limit = sqrt(n*1.) +2 ;
//     //mark[1] = false ;
//     //for (i = 4 ; i<=n ; i+=2) mark[i] = false ;

//     primeNumber.emplace_back(2) ;
//     for (i = 3 ; i<=n ; i+=2)
//     {
//         if (mark[i] == false) continue ;
//         primeNumber.emplace_back(i) ;
//         if (i<=limit){
//             for (j = i*i ; j<=n ; j+=i*2)
//                 mark[j] = false ;
//         }
//     }
// }
/*------------------------------------------------*/

/*----------------------Graph Moves----------------*/
//const int fx[]={+1,-1,+0,+0};
//const int fy[]={+0,+0,+1,-1};
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
//const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
//const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
/*------------------------------------------------*/

/*-----------------------Bitmask------------------*/
//int Set(int N,int pos){return N=N | (1<<pos);}
//int reset(int N,int pos){return N= N & ~(1<<pos);}
//bool check(int N,int pos){return (bool)(N & (1<<pos));}
/*------------------------------------------------*/

#define SIZE                (int)5005
#define MOD                 1000000007

void letsGetStarted()
{
    int n , x ;
    string s , make ;
    cin >> s ;
    bool flag = true ;

    if (s[0] == '@' || s[s.length()-1] == '@') {
        cout << "No solution"<< endl ;
        return ;
    }
    int idx = -1 ;
    vector <string> all ;
   for (int i = 1 ; i <s.size()-1 ; i++) {
        if (s[i] == '@'){
            if ( s[i+1]!='@' && s[i-1]!='.'){
                all.pb( s.substr(idx+1 , i+1-idx) ) ;
                s[i+1] = '.' ;
                i++;
                idx= i ;
            }
            else flag = false ;
        }

    }
    if (flag){
        if ( all.size() ){
            for (int i = 0 ; i<all.size()-1 ; i++ ){
                cout << all[i]<< "," ;
            }
            cout << all[all.size()-1] ;
         }
        cout << s.substr( idx+1 , s.size() - (idx+1) ) ;

    }
    else cout << "No solution" << endl ;

}

int main ()
{
   //freopen("E:/Programming/input.txt", "r" , stdin );
    Speed ;
    int testCase = 1 ;//cin >> testCase ;
    for (int i = 0; i < testCase; i++)
        letsGetStarted() ;
}


/*
                     Moontasir Mahmood
          Information And Communication Engineering
                  University Of Rajshahi
*/
#include <bits/stdc++.h>

#define setinf(ar)          memset(ar,126,sizeof ar)
#define MEM(a, b)           memset ( a, (b), sizeof(a) )
#define CLR(a)              memset(a, 0, sizeof(a))
#define MAX(a, b)           ((a) > (b) ? (a) : (b))
#define MIN(a, b)           ((a) < (b) ? (a) : (b))
#define ABS(X)              ( (X) > 0 ? (X) : ( -(X) ) )
#define S(X)                ( (X) * (X) )
#define SZ(V)               (int )V.size()
#define FORN(i, n)          for(int i = 0; i < n; i++)
#define FORAB(i, a, b)      for(int i = a; i <= b; i++)
#define ALL(V)              V.begin(), V.end()
#define ALLR(V)             V.rbegin(), V.rend()
#define IN(A, B, C)         ((B) <= (A) && (A) <= (C))
//#define AIN(A, B, C)        assert(IN(A, B, C))
#define Speed               ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

#define wa2(x , y)          cout << (#x) << " " << (#y)<< " is " << (x) << " " << (y)<< endl
#define wa(x)               cout << (#x) << " is " << (x) << endl

#define ll                  long long int
#define xx                  first
#define yy                  second
#define pb(x)               push_back(x)
#define PI                  acos(-1.0)

#define PII                 pair<int, int>
#define PLL                 pair<long long int, long long int>
#define VI                  vector <int>
#define BOUNDARY(i, j)      ((i >= 0 && i < row) && (j >= 0 && j < column))
#define max3(x, y, z)       MAX(MAX(x, y), MAX(y, z))

using namespace std;

//cout << fixed << setprecision(20) << p << endl;

/*---------------------- Mod Inverse / Big Mod ----------------*/
// template <class T> inline T bigmod(T p,T e,T M){
//     ll ret = 1;
//     for(; e > 0; e >>= 1){
//         if(e & 1) ret = (ret * p) % M;
//         p = (p * p) % M;
//     } return (T)ret;
// }
// template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
// template <class T> inline T modinverse(T a,T M){return bigmod(a,M-2,M);}
/*------------------------------------------------*/

/*----------------------Ncr----------------*/
// template<typename T>
// T nCr(T n, T r) {
//     if(r > n - r) r = n - r;
//     int  ans = 1,i;
//     for(i = 1; i <= r; i++) {
//         ans *= n - r + i;
//         ans /= i;
//     }
// return ans;
// }
/*------------------------------------------------*/

/*----------------------Sieve Of Eratosthenes----------------*/
// vector <int> primeNumber ;
// void sieve(int n)
// {
//     bool mark[1000002] ;
//     MEM(mark , true) ;
//     int i , j , limit = sqrt(n*1.) +2 ;
//     //mark[1] = false ;
//     //for (i = 4 ; i<=n ; i+=2) mark[i] = false ;

//     primeNumber.emplace_back(2) ;
//     for (i = 3 ; i<=n ; i+=2)
//     {
//         if (mark[i] == false) continue ;
//         primeNumber.emplace_back(i) ;
//         if (i<=limit){
//             for (j = i*i ; j<=n ; j+=i*2)
//                 mark[j] = false ;
//         }
//     }
// }
/*------------------------------------------------*/

/*----------------------Graph Moves----------------*/
//const int fx[]={+1,-1,+0,+0};
//const int fy[]={+0,+0,+1,-1};
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
//const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
//const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
/*------------------------------------------------*/

/*-----------------------Bitmask------------------*/
//int Set(int N,int pos){return N=N | (1<<pos);}
//int reset(int N,int pos){return N= N & ~(1<<pos);}
//bool check(int N,int pos){return (bool)(N & (1<<pos));}
/*------------------------------------------------*/

#define SIZE                (int)5005
#define MOD                 1000000007

void letsGetStarted()
{
    int n , x ;
    string s , make ;
    cin >> s ;
    bool flag = true ;

    if (s[0] == '@' || s[s.length()-1] == '@') {
        cout << "No solution"<< endl ;
        return ;
    }
    int idx = -1 ;
    vector <string> all ;
   for (int i = 1 ; i <s.size()-1 ; i++) {
        if (s[i] == '@'){
            if ( s[i+1]!='@' && s[i-1]!='.'){
                all.pb( s.substr(idx+1 , i+1-idx) ) ;
                s[i+1] = '.' ;
                i++;
                idx= i ;
            }
            else flag = false ;
        }

    }
    if (flag && all.size()){

            for (int i = 0 ; i<all.size()-1 ; i++ ){
                cout << all[i]<< "," ;
            }
            cout << all[all.size()-1] ;

        cout << s.substr( idx+1 , s.size() - (idx+1) ) ;

    }
    else cout << "No solution" << endl ;

}

int main ()
{
   //freopen("E:/Programming/input.txt", "r" , stdin );
    Speed ;
    int testCase = 1 ;//cin >> testCase ;
    for (int i = 0; i < testCase; i++)
        letsGetStarted() ;
}


/*
                     Moontasir Mahmood
          Information And Communication Engineering
                  University Of Rajshahi
*/
#include <bits/stdc++.h>

#define setinf(ar)          memset(ar,126,sizeof ar)
#define MEM(a, b)           memset ( a, (b), sizeof(a) )
#define CLR(a)              memset(a, 0, sizeof(a))
#define MAX(a, b)           ((a) > (b) ? (a) : (b))
#define MIN(a, b)           ((a) < (b) ? (a) : (b))
#define ABS(X)              ( (X) > 0 ? (X) : ( -(X) ) )
#define S(X)                ( (X) * (X) )
#define SZ(V)               (int )V.size()
#define FORN(i, n)          for(int i = 0; i < n; i++)
#define FORAB(i, a, b)      for(int i = a; i <= b; i++)
#define ALL(V)              V.begin(), V.end()
#define ALLR(V)             V.rbegin(), V.rend()
#define IN(A, B, C)         ((B) <= (A) && (A) <= (C))
//#define AIN(A, B, C)        assert(IN(A, B, C))
#define Speed               ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

#define wa2(x , y)          cout << (#x) << " " << (#y)<< " is " << (x) << " " << (y)<< endl
#define wa(x)               cout << (#x) << " is " << (x) << endl

#define ll                  long long int
#define xx                  first
#define yy                  second
#define pb(x)               push_back(x)
#define PI                  acos(-1.0)

#define PII                 pair<int, int>
#define PLL                 pair<long long int, long long int>
#define VI                  vector <int>
#define BOUNDARY(i, j)      ((i >= 0 && i < row) && (j >= 0 && j < column))
#define max3(x, y, z)       MAX(MAX(x, y), MAX(y, z))

using namespace std;

//cout << fixed << setprecision(20) << p << endl;

/*---------------------- Mod Inverse / Big Mod ----------------*/
// template <class T> inline T bigmod(T p,T e,T M){
//     ll ret = 1;
//     for(; e > 0; e >>= 1){
//         if(e & 1) ret = (ret * p) % M;
//         p = (p * p) % M;
//     } return (T)ret;
// }
// template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
// template <class T> inline T modinverse(T a,T M){return bigmod(a,M-2,M);}
/*------------------------------------------------*/

/*----------------------Ncr----------------*/
// template<typename T>
// T nCr(T n, T r) {
//     if(r > n - r) r = n - r;
//     int  ans = 1,i;
//     for(i = 1; i <= r; i++) {
//         ans *= n - r + i;
//         ans /= i;
//     }
// return ans;
// }
/*------------------------------------------------*/

/*----------------------Sieve Of Eratosthenes----------------*/
// vector <int> primeNumber ;
// void sieve(int n)
// {
//     bool mark[1000002] ;
//     MEM(mark , true) ;
//     int i , j , limit = sqrt(n*1.) +2 ;
//     //mark[1] = false ;
//     //for (i = 4 ; i<=n ; i+=2) mark[i] = false ;

//     primeNumber.emplace_back(2) ;
//     for (i = 3 ; i<=n ; i+=2)
//     {
//         if (mark[i] == false) continue ;
//         primeNumber.emplace_back(i) ;
//         if (i<=limit){
//             for (j = i*i ; j<=n ; j+=i*2)
//                 mark[j] = false ;
//         }
//     }
// }
/*------------------------------------------------*/

/*----------------------Graph Moves----------------*/
//const int fx[]={+1,-1,+0,+0};
//const int fy[]={+0,+0,+1,-1};
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
//const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
//const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
/*------------------------------------------------*/

/*-----------------------Bitmask------------------*/
//int Set(int N,int pos){return N=N | (1<<pos);}
//int reset(int N,int pos){return N= N & ~(1<<pos);}
//bool check(int N,int pos){return (bool)(N & (1<<pos));}
/*------------------------------------------------*/

#define SIZE                (int)5005
#define MOD                 1000000007

void letsGetStarted()
{
    int n , x ;
    string s , make ;
    cin >> s ;
    bool flag = true ;

    if (s[0] == '@' || s[s.length()-1] == '@') {
        cout << "No solution"<< endl ;
        return ;
    }
    int idx = -1 ;
    vector <string> all ;
    FORAB(i,1,s.size()-2) {
        if (s[i] == '@'){
            if ( s[i+1]!='@' && s[i-1]!='.'){
                all.pb( s.substr(idx+1 , i+1-idx) ) ;
                s[i+1] = '.' ;
                i++;
                idx= i ;
            }
            else flag = false ;
        }

    }

    if (flag){
        FORN(i,all.size()-1){
            cout << all[i]<< "," ;
        }
        cout << all[all.size()-1] ;
        cout << s.substr(idx+1 , s.size()-idx+1) ;
    }
    else {
         cout << "No solution"<< endl ;
    }
}

int main ()
{
   //freopen("E:/Programming/input.txt", "r" , stdin );
    Speed ;
    int testCase = 1 ;//cin >> testCase ;
    for (int i = 0; i < testCase; i++)
        letsGetStarted() ;
}


/*
                     Moontasir Mahmood
          Information And Communication Engineering
                  University Of Rajshahi
*/
#include <bits/stdc++.h>

#define setinf(ar)          memset(ar,126,sizeof ar)
#define MEM(a, b)           memset ( a, (b), sizeof(a) )
#define CLR(a)              memset(a, 0, sizeof(a))
#define MAX(a, b)           ((a) > (b) ? (a) : (b))
#define MIN(a, b)           ((a) < (b) ? (a) : (b))
#define ABS(X)              ( (X) > 0 ? (X) : ( -(X) ) )
#define S(X)                ( (X) * (X) )
#define SZ(V)               (int )V.size()
#define FORN(i, n)          for(int i = 0; i < n; i++)
#define FORAB(i, a, b)      for(int i = a; i <= b; i++)
#define ALL(V)              V.begin(), V.end()
#define ALLR(V)             V.rbegin(), V.rend()
#define IN(A, B, C)         ((B) <= (A) && (A) <= (C))
//#define AIN(A, B, C)        assert(IN(A, B, C))
#define Speed               ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

#define wa2(x , y)          cout << (#x) << " " << (#y)<< " is " << (x) << " " << (y)<< endl
#define wa(x)               cout << (#x) << " is " << (x) << endl

#define ll                  long long int
#define xx                  first
#define yy                  second
#define pb(x)               push_back(x)
#define PI                  acos(-1.0)

#define PII                 pair<int, int>
#define PLL                 pair<long long int, long long int>
#define VI                  vector <int>
#define BOUNDARY(i, j)      ((i >= 0 && i < row) && (j >= 0 && j < column))
#define max3(x, y, z)       MAX(MAX(x, y), MAX(y, z))

using namespace std;

//cout << fixed << setprecision(20) << p << endl;

/*---------------------- Mod Inverse / Big Mod ----------------*/
// template <class T> inline T bigmod(T p,T e,T M){
//     ll ret = 1;
//     for(; e > 0; e >>= 1){
//         if(e & 1) ret = (ret * p) % M;
//         p = (p * p) % M;
//     } return (T)ret;
// }
// template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
// template <class T> inline T modinverse(T a,T M){return bigmod(a,M-2,M);}
/*------------------------------------------------*/

/*----------------------Ncr----------------*/
// template<typename T>
// T nCr(T n, T r) {
//     if(r > n - r) r = n - r;
//     int  ans = 1,i;
//     for(i = 1; i <= r; i++) {
//         ans *= n - r + i;
//         ans /= i;
//     }
// return ans;
// }
/*------------------------------------------------*/

/*----------------------Sieve Of Eratosthenes----------------*/
// vector <int> primeNumber ;
// void sieve(int n)
// {
//     bool mark[1000002] ;
//     MEM(mark , true) ;
//     int i , j , limit = sqrt(n*1.) +2 ;
//     //mark[1] = false ;
//     //for (i = 4 ; i<=n ; i+=2) mark[i] = false ;

//     primeNumber.emplace_back(2) ;
//     for (i = 3 ; i<=n ; i+=2)
//     {
//         if (mark[i] == false) continue ;
//         primeNumber.emplace_back(i) ;
//         if (i<=limit){
//             for (j = i*i ; j<=n ; j+=i*2)
//                 mark[j] = false ;
//         }
//     }
// }
/*------------------------------------------------*/

/*----------------------Graph Moves----------------*/
//const int fx[]={+1,-1,+0,+0};
//const int fy[]={+0,+0,+1,-1};
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
//const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
//const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
/*------------------------------------------------*/

/*-----------------------Bitmask------------------*/
//int Set(int N,int pos){return N=N | (1<<pos);}
//int reset(int N,int pos){return N= N & ~(1<<pos);}
//bool check(int N,int pos){return (bool)(N & (1<<pos));}
/*------------------------------------------------*/

#define SIZE                (int)5005
#define MOD                 1000000007

void letsGetStarted()
{
    int n , x ;
    string s , make ;
    cin >> s ;
    bool flag = true ;

    if (s[0] == '@' || s[s.length()-1] == '@') {
        cout << "No solution"<< endl ;
        return ;
    }
    int idx = -1 ;
    vector <string> all ;
    FORAB(i,1,s.size()-2) {
        if (s[i] == '@'){
            if ( s[i+1]!='@' && s[i-1]!='.'){
                all.pb( s.substr(idx+1 , i+1-idx) ) ;
                s[i+1] = '.' ;
                i++;
                idx= i ;
            }
            else flag = false ;
        }

    }

    if (flag){
        FORN(i,all.size()-1){
            cout << all[i]<< "," ;
        }
        cout << all[all.size()-1] ;
    }
    else {
         cout << "No solution"<< endl ;
    }
}

int main ()
{
   //freopen("E:/Programming/input.txt", "r" , stdin );
    Speed ;
    int testCase = 1 ;//cin >> testCase ;
    for (int i = 0; i < testCase; i++)
        letsGetStarted() ;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin >> s;
    vector <string> v;
    if(s[0] == '@' || s[s.length()-1] == '@' || s.find("@@") != string::npos || s.find("@") == string::npos){
        cout << "No solution";
        return 0;
    }
    int i = 0;
    while(i < s.length()){
        string cur = "";
        while(i < s.length() && s[i] != '@'){
            cur += s[i++];
        }
        cur += s[i++];
        if(i != s.length() - 1 && s[i+1] == '@'){
            cout << "No solution";
            return 0;
        }
        if(s.find("@", i) != string::npos)
            cur += s[i++];
        else{
            for(; i < s.length(); i++){
                cur += s[i];
            }
        }
        v.push_back(cur);
    }
    for(int j = 0; j < v.size()-1; j++){
        cout << v[j] << ",";
    }
    cout << v.back();
    return 0;
}


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

using namespace std;

string str;

int last_pos = 0;

int main()
{
    cin >> str;
    for(int i = 0; i < str.length(); i++){
        if(str.find('@') == string::npos){
            cout << "No solution";
            return 0;
        }
        if(str.find('@') == 0 || str[str.length() - 1] == '@'){
            cout << "No solution";
            return 0;
        }
        //last_pos = str.find('@');
        if(str[last_pos-2] == '@' || str[last_pos+2] == '@'){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@' && (str[i-1] == '@' || str[i+1] == '@')){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@'){
            last_pos = i;
        }
    }
    for(int i = 0; i < str.size(); i++){
        cout << str[i];
        if(i > 0 && str.size() - 1 != i && str[i - 1] == '@' && !(i - 1 == last_pos)){
            cout << ',';
        }
    }
}


#include <bits/stdc++.h>

using namespace std;

string str;

int last_pos = 0;

int main()
{
    cin >> str;
    for(int i = 0; i < str.length(); i++){
        if(str.find('@') == string::npos){
            cout << "No solution";
            return 0;
        }
        if(str.find('@') == 0 || str.find('@') == str.length()){
            cout << "No solution";
            return 0;
        }
        last_pos = str.find('@');
        if(str[last_pos-2] == '@' || str[last_pos+2] == '@'){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@'){
            last_pos = i;
        }
    }
    for(int i = 0; i < str.length(); i++){
        cout << str[i];
        if(i != str.length() - 1 && '@' == str[i-1])
            cout << ',';
    }
    return 0;
}


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

using namespace std;

string str;

int last_pos = 0, pos;

int main()
{
    cin >> str;
    for(int i = 0; i < str.length(); i++){
        if(str.find('@') == string::npos){
            cout << "No solution";
            return 0;
        }
        if(str.find('@') == 0 || str[str.length() - 1] == '@'){
            cout << "No solution";
            return 0;
        }
        pos = str.find('@');
        if(str[pos-2] == '@' || str[pos+2] == '@'){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@' && (str[i-1] == '@' || str[i+1] == '@')){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@'){
            last_pos = i;
        }
    }
    for(int i = 0; i < str.size(); i++){
        cout << str[i];
        if(i > 0 && str.size() - 1 != i && str[i - 1] == '@' && !(i - 1 == last_pos)){
            cout << ',';
        }
    }
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin >> s;
    vector <string> v;
    if(s[0] == '@' || s[s.length()-1] == '@' || s.find("@@") != string::npos){
        cout << "No solution";
        return 0;
    }
    int i = 0;
    while(i < s.length()){
        string cur = "";
        while(i < s.length() && s[i] != '@'){
            cur += s[i++];
        }
        cur += s[i++];
        if(i != s.length() - 1 && s[i+1] == '@'){
            cout << "No solution";
            return 0;
        }
        if(s.find("@", i) != string::npos)
            cur += s[i++];
        else{
            for(; i < s.length(); i++){
                cur += s[i];
            }
        }
        v.push_back(cur);
    }
    for(int j = 0; j < v.size()-1; j++){
        cout << v[j] << ",";
    }
    cout << v.back();
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

string str;

int last_pos = 0;

int main()
{
    int cnt = 0;
    cin >> str;
    for(int i = 0; i < str.length(); i++){
        if(str.find('@') == string::npos){
            cout << "No solution";
            return 0;
        }
        if(str.find('@') == 0 || str.find('@') == str.length()){
            cout << "No solution";
            return 0;
        }
        last_pos = str.find('@');
        if(str[last_pos-2] == '@' || str[last_pos+2] == '@'){
            cout << "No solution";
            return 0;
        }
    }
    for(int i = 0; i < str.length(); i++){
        cout << str[i];
        if(str[i] == '@'){
            i++;
            cout << str[i] << ',';
        }
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin >> s;
    vector <string> v;
    if(s[0] == '@' || s[s.length()-1] == '@' || s.find("@@") != string::npos){
        cout << "No solution";
        return 0;
    }
    int i = 0;
    while(i < s.length()){
        string cur = "";
        while(i < s.length() && s[i] != '@'){
            cur += s[i++];
        }
        cur += s[i++];
        if(i != s.length() - 1 && s[i+1] == '@'){
            cout << "No solution";
            return 0;
        }
        cur += s[i++];
        v.push_back(cur);
    }
    for(int j = 0; j < v.size()-1; j++){
        cout << v[j] << ",";
    }
    cout << v.back();
    return 0;
}


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

using namespace std;

string str;

int last_pos = 0, pos = 0;

int main()
{
    cin >> str;
    for(int i = 0; i < str.length(); i++){
        if(str.find('@') == string::npos){
            cout << "No solution";
            return 0;
        }
        if(str.find('@') == 0 || str[str.length() - 1] == '@'){
            cout << "No solution";
            return 0;
        }
        pos = str.find('@', pos+1);
        if(str[pos-2] == '@' || str[pos+2] == '@'){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@' && (str[i-1] == '@' || str[i+1] == '@')){
            cout << "No solution";
            return 0;
        }
        if(str[i] == '@'){
            last_pos = i;
        }
    }
    for(int i = 0; i < str.size(); i++){
        cout << str[i];
        if(i > 0 && str.size() - 1 != i && str[i - 1] == '@' && !(i - 1 == last_pos)){
            cout << ',';
        }
    }
}


#include <iostream>
#include <string>
#include <cstring>
// #include <bits/stdc++.h>
// #include <map>
// #include <vector>

using namespace std;

int main()
{
	string s;
	cin >> s;

	int l = s.length(),nc=0,ci[201];

	for (int i = 0; i < l; ++i)
	{
		if (s[i]=='@')
		{
			ci[nc] = i;
			nc++;
		}
	}

	if (ci[0]==0 || ci[nc-1] == l-1)
	{
		cout << "No solution";
		return 0;
	}

	for (int i = 1; i < nc; ++i)
	{
		if (ci[i]-ci[i-1] < 3)
		{
			cout << "No solution";
			return 0;
		}
	}

	int f = s.find('@');

	while(f!=-1)
	{
		// cout << f << "\n";
		s.insert(f+2,",");
		f = s.find('@',f+1);
	}

	l = s.length();
	for (int i = l-1; i > 0; --i)
	{
		if (s[i]==',')
		{
			s.erase(i,1);
			break;
		}
	}

	cout << s;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
// #include <bits/stdc++.h>
// #include <map>
// #include <vector>

using namespace std;

int main()
{
	string s;
	cin >> s;

	int l = s.length(),nc=0,ci[200];

	for (int i = 0; i < l; ++i)
	{
		if (s[i]=='@')
		{
			ci[nc] = i;
			nc++;
		}
	}

	if (ci[0]==0 || ci[nc-1] == l-1)
	{
		cout << "No solution";
		return 0;
	}

	for (int i = 1; i < nc; ++i)
	{
		if (ci[i]-ci[i-1] < 3)
		{
			cout << "No solution";
			return 0;
		}
	}

	int f = s.find('@');

	while(f!=-1)
	{
		// cout << f << "\n";
		s.insert(f+2,",");
		f = s.find('@',f+1);
	}

	l = s.length();
	for (int i = l-1; i > 0; --i)
	{
		if (s[i]==',')
		{
			s.erase(i,1);
			break;
		}
	}

	cout << s;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
// #include <bits/stdc++.h>
// #include <map>
// #include <vector>

using namespace std;

int main()
{
	string s;
	cin >> s;

	int l = s.length(),nc=0,ci[201]={0};

	for (int i = 0; i < l; ++i)
	{
		if (s[i]=='@')
		{
			ci[nc] = i;
			nc++;
		}
	}

	if (nc==0)
	{
		cout << "No solution";
		return 0;
	}

	if (ci[0]==0 || ci[nc-1] == l-10)
	{
		cout << "No solution";
		return 0;
	}

	for (int i = 1; i < nc; ++i)
	{
		if (ci[i]-ci[i-1] < 3)
		{
			cout << "No solution";
			return 0;
		}
	}

	int f = s.find('@');

	while(f!=-1)
	{
		// cout << f << "\n";
		s.insert(f+2,",");
		f = s.find('@',f+1);
	}

	l = s.length();
	for (int i = l-1; i > 0; --i)
	{
		if (s[i]==',')
		{
			s.erase(i,1);
			break;
		}
	}

	cout << s;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
// #include <bits/stdc++.h>
// #include <map>
// #include <vector>

using namespace std;

int main()
{
	string s;
	cin >> s;

	int l = s.length(),nc=0,ci[201]={0};

	for (int i = 0; i < l; ++i)
	{
		if (s[i]=='@')
		{
			ci[nc] = i;
			nc++;
		}
	}

	// cout << ci[nc-1] << " " << l;

	if (nc==0)
	{
		cout << "No solution";
		return 0;
	}

	if (ci[0]==0 || ci[nc-1] == l-1)
	{
		cout << "No solution";
		return 0;
	}

	for (int i = 1; i < nc; ++i)
	{
		if (ci[i]-ci[i-1] < 3)
		{
			cout << "No solution";
			return 0;
		}
	}

	int f = s.find('@');

	while(f!=-1)
	{
		// cout << f << "\n";
		s.insert(f+2,",");
		f = s.find('@',f+1);
	}

	l = s.length();
	for (int i = l-1; i > 0; --i)
	{
		if (s[i]==',')
		{
			s.erase(i,1);
			break;
		}
	}

	cout << s;

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
//#define int  long long
#define rep(i,a,b) for (int i = a; i < b; ++i)
#define rrep(i,a,b) for (int i = a; i >= b; --i)
#define rep0(n)     for(int i = 0 ; i < n; ++i )
#define rep1(n)     for(int i = 1 ; i <= n; ++i )
#define pb push_back
#define mod 1000000007
#define sd(x) scanf("%d",&x)
#define ll long long int
#define tc int t;cin>>t; while(t--)
#define all(v) v.begin(),v.end()
#define mp make_pair
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl  "\n"
#define spc   " "
#define mem0(a)  memset(a,0,sizeof(a))
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
    cout << name << " : " << arg1 << endl;
    //use cerr if u want to display at the bottom
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
    const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1 << " | "; __f(comma + 1, args...);
}
#else
#define trace(...)
#endif
void OJ()
{
#ifndef ONLINE_JUDGE
    // for getting input from input.txt
    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    //this can be opted out if you want to print the output to the sublime console
    freopen("output.txt", "w", stdout);
#endif
}
signed main()
{
    IOS
    OJ();
    string s;
    int c = 0;
    cin >> s;
    if (*(s.begin()) == '@' || *(s.end() - 1) == '@')return puts("No solution");
    for (int i = s.size(); i > 1; i--)if (s[i] == '@' &&( s[i - 2] == '@'||s[i - 1] == '@'))return puts("No solution");
    rep0(s.size())if (s[i] == '@')c++;
    if(c==0)return puts("No solution");
    c--;
    int k = 0;
    while (c)
    {
        if (s[k] == '@')cout << s[k] << s[k + 1] << ",", k += 2, c--;
        else cout << s[k], k++;
    }
    for (; k < s.size(); k++)
    {
        cout << s[k];
    }

}


#include<bits/stdc++.h>
using namespace std;
//#define int  long long
#define rep(i,a,b) for (int i = a; i < b; ++i)
#define rrep(i,a,b) for (int i = a; i >= b; --i)
#define rep0(n)     for(int i = 0 ; i < n; ++i )
#define rep1(n)     for(int i = 1 ; i <= n; ++i )
#define pb push_back
#define mod 1000000007
#define sd(x) scanf("%d",&x)
#define ll long long int
#define tc int t;cin>>t; while(t--)
#define all(v) v.begin(),v.end()
#define mp make_pair
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl  "\n"
#define spc   " "
#define mem0(a)  memset(a,0,sizeof(a))
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
    cout << name << " : " << arg1 << endl;
    //use cerr if u want to display at the bottom
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
    const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1 << " | "; __f(comma + 1, args...);
}
#else
#define trace(...)
#endif
void OJ()
{
#ifndef ONLINE_JUDGE
    // for getting input from input.txt
    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    //this can be opted out if you want to print the output to the sublime console
    freopen("output.txt", "w", stdout);
#endif
}
signed main()
{
    IOS
    OJ();
    string s;
    int c = 0;
    cin >> s;
    if (*(s.begin()) == '@' || *(s.end() - 1) == '@')return puts("No solution");
    for (int i = s.size(); i > 1; i--)if (s[i] == '@' && s[i - 2] == '@')return puts("No solution");
    rep0(s.size())if (s[i] == '@')c++;
    c--;
    int k = 0;
    while (c)
    {
        if (s[k] == '@')cout << s[k] << s[k + 1] << ",", k += 2, c--;
        else cout << s[k], k++;
    }
    for (; k < s.size(); k++)
    {
        cout << s[k];
    }

}


#include<bits/stdc++.h>
using namespace std;
//#define int  long long
#define rep(i,a,b) for (int i = a; i < b; ++i)
#define rrep(i,a,b) for (int i = a; i >= b; --i)
#define rep0(n)     for(int i = 0 ; i < n; ++i )
#define rep1(n)     for(int i = 1 ; i <= n; ++i )
#define pb push_back
#define mod 1000000007
#define sd(x) scanf("%d",&x)
#define ll long long int
#define tc int t;cin>>t; while(t--)
#define all(v) v.begin(),v.end()
#define mp make_pair
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl  "\n"
#define spc   " "
#define mem0(a)  memset(a,0,sizeof(a))
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
    cout << name << " : " << arg1 << endl;
    //use cerr if u want to display at the bottom
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
    const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1 << " | "; __f(comma + 1, args...);
}
#else
#define trace(...)
#endif
void OJ()
{
#ifndef ONLINE_JUDGE
    // for getting input from input.txt
    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    //this can be opted out if you want to print the output to the sublime console
    freopen("output.txt", "w", stdout);
#endif
}
signed main()
{
    IOS
    OJ();
    string s;
    int c = 0;
    cin >> s;
    if (*(s.begin()) == '@' || *(s.end() - 1) == '@')return puts("No Solution");
    for (int i = s.size(); i > 1; i--)if (s[i] == '@' && s[i - 2] == '@')return puts("No Solution");
    rep0(s.size())if (s[i] == '@')c++;
    c--;
    int k = 0;
    while (c)
    {
        if (s[k] == '@')cout << s[k] << s[k + 1] << ",", k += 2, c--;
        else cout << s[k], k++;
    }
    for (; k < s.size(); k++)
    {
        cout << s[k];
    }

}


#include<bits/stdc++.h>
using namespace std;
//#define int  long long
#define rep(i,a,b) for (int i = a; i < b; ++i)
#define rrep(i,a,b) for (int i = a; i >= b; --i)
#define rep0(n)     for(int i = 0 ; i < n; ++i )
#define rep1(n)     for(int i = 1 ; i <= n; ++i )
#define pb push_back
#define mod 1000000007
#define sd(x) scanf("%d",&x)
#define ll long long int
#define tc int t;cin>>t; while(t--)
#define all(v) v.begin(),v.end()
#define mp make_pair
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl  "\n"
#define spc   " "
#define mem0(a)  memset(a,0,sizeof(a))
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
    cout << name << " : " << arg1 << endl;
    //use cerr if u want to display at the bottom
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
    const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1 << " | "; __f(comma + 1, args...);
}
#else
#define trace(...)
#endif
void OJ()
{
#ifndef ONLINE_JUDGE
    // for getting input from input.txt
    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    //this can be opted out if you want to print the output to the sublime console
    freopen("output.txt", "w", stdout);
#endif
}
signed main()
{
    IOS
    OJ();
    string s;
    int c = 0;
    cin >> s;
    if (*(s.begin()) == '@' || *(s.end() - 1) == '@')return puts("No solution");
    for (int i = s.size(); i > 1; i--)if (s[i] == '@' && s[i - 2] == '@')return puts("No solution");
    rep0(s.size())if (s[i] == '@')c++;
    if(c==0)return puts("No solution");
    c--;
    int k = 0;
    while (c)
    {
        if (s[k] == '@')cout << s[k] << s[k + 1] << ",", k += 2, c--;
        else cout << s[k], k++;
    }
    for (; k < s.size(); k++)
    {
        cout << s[k];
    }

}


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

int main()
{
	string a;
	cin>>a;
	string s[200];
	int t=0,k=0;
	if(a.at(0)=='@'||a.at(a.size()-1)=='@')
	{
		cout<<"No Solution"<<endl;
		return 0;
	}
	int i=1;
	while(i<=a.size()-1)
	{
		if(a.at(i)=='@')
		{
			for(int j=i+1;j<a.size();j++)
			{
				if(a.at(j)=='@'&&(a.at(j-1)=='@'||a.at(j-2)=='@'))
				{cout<<"No solution"<<endl; return 0;}
				else if(a.at(j)=='@')
				{
					s[t++]=a.substr(k,j-1);
					i=j;
					k=j-1;
					break;
				}
				else if(j==a.size()-1)
				{
					s[t++]=a.substr(k,a.size()-1);
					i=j;
					k=j;
					break;
				}

			}
		}
		else
		{
			i++;
		}
	}
	for(i=0;i<t;i++)
	{
		if(i!=t-1)
		cout<<s[i]<<",";
		else
		cout<<s[i];
	}
return 0;
}


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

int main()
{
	string a;
	cin>>a;
	string s[200];
	int t=0,k=0;
	if(a.at(0)=='@'||a.at(a.size()-1)=='@')
	{
		cout<<"No solution"<<endl;
		return 0;
	}
	int i=1;
	while(i<=a.size()-1)
	{
		if(a.at(i)=='@')
		{
			for(int j=i+1;j<a.size();j++)
			{
				if(a.at(j)=='@'&&(a.at(j-1)=='@'||a.at(j-2)=='@'))
				{cout<<"No solution"<<endl; return 0;}
				else if(a.at(j)=='@')
				{
					s[t++]=a.substr(k,j-1);
					i=j;
					k=j-1;
					break;
				}
				else if(j==a.size()-1)
				{
					s[t++]=a.substr(k,a.size()-1);
					i=j;
					k=j;
					break;
				}

			}
		}
		else
		{
			i++;
		}
	}
	for(i=0;i<t;i++)
	{
		if(i!=t-1)
		cout<<s[i]<<",";
		else
		cout<<s[i];
	}
return 0;
}


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

int main()
{
	string a;
	cin>>a;
	string s[200];
	int t=0,k=0;
	if(a.at(0)=='@'||a.at(a.size()-1)=='@')
	{
		cout<<"No solution"<<endl;
		return 0;
	}
	int i=1;
	while(i<=a.size()-1)
	{
		if(a.at(i)=='@')
		{
			for(int j=i+1;j<a.size();j++)
			{
				if(a.at(j)=='@'&&(a.at(j-1)=='@'||a.at(j-2)=='@'))
				{cout<<"No solution"<<endl; return 0;}
				else if(a.at(j)=='@')
				{
					s[t++]=a.substr(k,j-k-1);
					i=j;
					k=j-1;
					break;
				}
				else if(j==a.size()-1)
				{
					s[t++]=a.substr(k,a.size()-k);
					i=j;
					k=j;
					break;
				}

			}
		}
		else
		{
			i++;
		}
	}
	for(i=0;i<t;i++)
	{
		if(i!=t-1)
		cout<<s[i]<<",";
		else
		cout<<s[i];
	}
return 0;
}


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

int main()
{
	string a;
	cin>>a;
	string s[200];
	int t=0,k=0,cnt=0;
	if(a.at(0)=='@'||a.at(a.size()-1)=='@')
	{
		cout<<"No solution"<<endl;
		return 0;
	}
	int i=1;
	while(i<=a.size()-1)
	{
		if(a.at(i)=='@')
		{
			cnt++;
			for(int j=i+1;j<a.size();j++)
			{
				if(a.at(j)=='@'&&(a.at(j-1)=='@'||a.at(j-2)=='@'))
				{cout<<"No solution"<<endl; return 0;}
				else if(a.at(j)=='@')
				{
					s[t++]=a.substr(k,j-k-1);
					i=j;
					k=j-1;
					break;
				}
				else if(j==a.size()-1)
				{
					s[t++]=a.substr(k,a.size()-k);
					i=j;
					k=j;
					break;
				}

			}
		}
		else
		{
			i++;
		}
	}
	if(cnt==0)
		{cout<<"No solution"<<endl; return 0;}
	for(i=0;i<t;i++)
	{
		if(i!=t-1)
		cout<<s[i]<<",";
		else
		cout<<s[i];
	}
return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
      bool Check = true;
      if(s.size() < 3 || s[s.size() - 1] == '@a') Check = false;
      else{
        FORa(i , 0 , s.size() - 2){
     if(s[i] == '@') {
            s.insert(s.begin() + i + 2 , 1 , ',');
     }
     }
     FORb(i , s.size() - 1 , 0){
     if(s[i] == ',') {
            s.erase(i , 1);
            break;
     }
     }

      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;

      }
      }

     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
     FORa(i , 0 , s.size() - 1){
     if(s[i] == '@') {
            s.insert(s.begin() + i + 2 , 1 , ',');
     }
     }
     FORb(i , s.size() - 1 , 0){
     if(s[i] == ',') {
            s.erase(i , 1);
            break;
     }
     }
      bool Check = true;
      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;

      }
     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
      bool Check = true;
      if(s.size() < 3 || s[s.size() - 1] == '@') Check = false;
      else{
        FORa(i , 0 , s.size() - 2){
     if(s[i] == '@') {
            s.insert(s.begin() + i + 2 , 1 , ',');
     }
     }
     FORb(i , s.size() - 1 , 0){
     if(s[i] == ',') {
            s.erase(i , 1);
            break;
     }
     }

      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;

      }
      }

     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
     FORa(i , 0 , s.size() - 3){
     if(s[i] == '@') s.insert(s.begin() + i + 2 , 1 , ',');
     }
      bool Check = true;
      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i < s.size() - 1 && i > 1);
      if(Check == false) break;
      }
     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
     int dem = 0;
      bool Check = true;
      if(s.size() < 3 || s[s.size() - 1] == '@') Check = false;
      else{

        FORa(i , 0 , s.size() - 2){
     if(s[i] == '@') {
            s.insert(s.begin() + i + 2 , 1 , ',');
            dem ++;
     }
     }
     FORb(i , s.size() - 1 , 0){
     if(s[i] == ',') {
            s.erase(i , 1);
            break;
     }
     }

      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;
      }
      }
     if(Check && dem > 0) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
     FORa(i , 0 , s.size() - 3){
     if(s[i] == '@') s.insert(s.begin() + i + 2 , 1 , ',');
     }
      bool Check = true;
      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;

      }
     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
      bool Check = true;
      if(s.size() < 3) Check = false;
      else{
        FORa(i , 0 , s.size() - 1){
     if(s[i] == '@') {
            s.insert(s.begin() + i + 2 , 1 , ',');
     }
     }
     FORb(i , s.size() - 1 , 0){
     if(s[i] == ',') {
            s.erase(i , 1);
            break;
     }
     }

      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;

      }
      }

     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include<bits/stdc++.h>

using namespace std;

#define FORb(i , b , a) for (int i = b ; i >= a ; i --)
#define FORa(i , a , b) for (int i = a ; i <= b ; i ++)
#define fi first
#define sd second
#define pb push_back

typedef long long ll;
typedef long double ld;

int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(0);
     string s;
     cin >> s;
      bool Check = true;
      if(s.size() < 3) Check = false;
      else{
        FORa(i , 0 , s.size() - 2){
     if(s[i] == '@') {
            s.insert(s.begin() + i + 2 , 1 , ',');
     }
     }
     FORb(i , s.size() - 1 , 0){
     if(s[i] == ',') {
            s.erase(i , 1);
            break;
     }
     }

      FORa(i , 0 , s.size() - 2){
      if(s[i] == '@')  Check = (s[i - 1] != '@' && s[i + 1] != '@' && s[i - 1] != ',' && s[i + 1] != ',' && i >= 1);
      if(Check == false) break;

      }
      }

     if(Check) cout << s << endl;
     else cout << "No solution" << endl;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int leng=s.size(),at_signs=0;
    if(s[0]=='@'){
        cout<<"No solution";
        return 0;
    }
    if(s[leng-1]=='@'){
        cout<<"No solution";
        return 0;
    }
    for(int i=0;i<leng-1;i++){
        if(s[i]=='@'&&s[i+1]=='@'){
            cout<<"No solution";
            return 0;
        }
    }
    for(int i=0;i<leng-2;i++){
        if(s[i]=='@'&&s[i+2]=='@'){
            cout<<"No solution";
            return 0;
        }
    }
    vector <int> comma;
    for(int i=0;i<leng;i++){
        if(s[i]=='@'){
            at_signs++;
            comma.push_back(i+1);
        }
    }
    for(int i=0;i<leng;i++){
        cout<<s[i];
        if(s[i-1]=='@'){
            at_signs--;
            if(at_signs>=1){
                cout<<",";
            }
        }
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int tool=s.size();
    vector <int> commaha;
    int ats=0;
    int tool_commaha=0;
    if(s[0]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    if(s[tool-1]=='@'){
            //fydrt
        cout<< "No solution" <<endl;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'&&s[i+1]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
        else if(s[i]=='@'&&s[i+2]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            tool_commaha++;
        }
    }
    //cout<<commaha.size()<<endl;
    if(tool_commaha==0){
        cout<< "No solution" <<endl;
        return 0;
    }
    if(tool_commaha==1){
        cout<<s;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            ats++;
            if(ats!=tool_commaha){
                commaha.push_back(i+1);

            }
        }
    }
    for(int i=0 ; i<tool ; i++){
        cout<<s[i];
        for(int j=0 ; j<tool_commaha ; j++){
            if(i==commaha[j]){
                cout<<",";
                break;
            }
        }
    }
    /*cout<<endl;
    for(int i=0 ; i<commaha.size() ; i++){
        cout<< commaha[i] << " ";
    }
    cout<<endl;*/

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int tool=s.size();
    vector <int> commaha;
    int ats=0;
    int tool_commaha=0;
    if(s[0]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    if(s[tool-1]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'&&s[i+1]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
        else if(s[i]=='@'&&s[i+2]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            tool_commaha++;
        }
    }
    //cout<<commaha.size()<<endl;
    if(tool_commaha==0){
        cout<< "No solution" <<endl;
        return 0;
    }
    if(tool_commaha==1){
        cout<<s;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            ats++;
            if(ats!=tool_commaha){
                commaha.push_back(i+1);

            }
        }
    }
    for(int i=0 ; i<tool ; i++){
        cout<<s[i];
        for(int j=0 ; j<tool_commaha ; j++){
            if(i==commaha[j]){
                cout<<",";
                break;
            }
        }
    }
    /*cout<<endl;
    for(int i=0 ; i<commaha.size() ; i++){
        cout<< commaha[i] << " ";
    }
    cout<<endl;*/

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int tool=s.size();
    vector <int> commaha;
    int ats=0;
    int tool_commaha=0;
    if(s[0]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    if(s[tool-1]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'&&s[i+1]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
        else if(s[i]=='@'&&s[i+2]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            tool_commaha++;
        }
    }
    //cout<<commaha.size()<<endl;
    if(tool_commaha==1){
        cout<<s;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            ats++;
            if(ats!=tool_commaha){
                commaha.push_back(i+1);

            }
        }
    }
    for(int i=0 ; i<tool ; i++){
        cout<<s[i];
        for(int j=0 ; j<tool_commaha ; j++){
            if(i==commaha[j]){
                cout<<",";
                break;
            }
        }
    }
    /*cout<<endl;
    for(int i=0 ; i<commaha.size() ; i++){
        cout<< commaha[i] << " ";
    }
    cout<<endl;*/

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int tool=s.size();
    vector <int> commaha;
    int ats=0;
    int tool_commaha=0;
    if(s[0]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    if(s[tool-1]=='@'){
        cout<< "No solution" <<endl;
        return 0;
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'&&s[i+1]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
        else if(s[i]=='@'&&s[i+2]=='@'){
            cout<< "No solution" <<endl;
            return 0;
        }
    }
    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            tool_commaha++;
        }
    }
    //cout<<commaha.size()<<endl;

    for(int i=0 ; i<tool-1 ; i++){
        if(s[i]=='@'){
            ats++;
            if(ats!=tool_commaha){
                commaha.push_back(i+1);

            }
        }
    }
    for(int i=0 ; i<tool ; i++){
        cout<<s[i];
        for(int j=0 ; j<tool_commaha ; j++){
            if(i==commaha[j]){
                cout<<",";
                break;
            }
        }
    }
    /*cout<<endl;
    for(int i=0 ; i<commaha.size() ; i++){
        cout<< commaha[i] << " ";
    }
    cout<<endl;*/

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int leng=s.size(),at_signs=0;
    if(s[0]=='@'){
        cout<<"No solution";
        return 0;
    }
    if(s[leng-1]=='@'){
        cout<<"No solution";
        return 0;
    }
    for(int i=0;i<leng-1;i++){
        if(s[i]=='@'&&s[i+1]=='@'){
            cout<<"No solution";
            return 0;
        }
    }
    for(int i=0;i<leng-2;i++){
        if(s[i]=='@'&&s[i+2]=='@'){
            cout<<"No solution";
            return 0;
        }
    }
    vector <int> comma;
    for(int i=0;i<leng;i++){
        if(s[i]=='@'){
            at_signs++;
            comma.push_back(i+1);
        }
    }
    if(at_signs==0){
        cout<<"No solution";
        return 0;
    }
    for(int i=0;i<leng;i++){
        cout<<s[i];
        if(s[i-1]=='@'){
            at_signs--;
            if(at_signs>=1){
                cout<<",";
            }
        }
    }
    return 0;
}


#include                        <bits/stdc++.h>
#define   ulli                  unsigned long long int
#define   lli                   long long int
#define   MOD                   1000000007
#define   PI                    acos(-1.0)
#define   UNIQUE(V)             (V).erase(unique(ALL(V), (V).end()) //vector/string etc must need to be sorted
#define   timesave              ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define   ALL(V)                (V).begin(), (V).end()
#define   MEM(a, val)           memset(a, val, sizeof(a))
#define   SORT(v)               sort(v.begin(),v.end())
#define   REV(v)                reverse(v.begin(),v.end())
using     namespace             std;

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    //timesave;

    string s;

    cin >> s;

    int l = s.size();

    string ss = "";
    vector<string> v;

    int paisi = 0, cnt = 0, flag = 0;

    for(int i = 0; i < l; i++){
        if(s[i] == '@'){
            if(!cnt) {flag = 1; break;}
            ss += s[i];
            cnt++;
            paisi = 1;
        }
        else{
            if(paisi){
                ss += s[i];
                v.push_back(ss);
                ss = "";
                paisi = 0; cnt = 0;
            }
            else {ss += s[i]; cnt++;}
        }
    }

    l = v.size();

    if(!l || flag) cout << "No solution" << "\n";
    else{
        for(int i = 0; i < l; i++){
            cout << v[i];
            if(i != l-1) cout << ",";
        }
        cout << "\n";
    }

    return 0;
}


#include                        <bits/stdc++.h>
#define   ulli                  unsigned long long int
#define   lli                   long long int
#define   MOD                   1000000007
#define   PI                    acos(-1.0)
#define   UNIQUE(V)             (V).erase(unique(ALL(V), (V).end()) //vector/string etc must need to be sorted
#define   timesave              ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define   ALL(V)                (V).begin(), (V).end()
#define   MEM(a, val)           memset(a, val, sizeof(a))
#define   SORT(v)               sort(v.begin(),v.end())
#define   REV(v)                reverse(v.begin(),v.end())
using     namespace             std;

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    //timesave;

    string s;

    cin >> s;

    int l = s.size();

    string ss = "";
    vector<string> v;

    int paisi = 0, cnt = 0, flag = 0;

    for(int i = 0; i < l; i++){
        if(s[i] == '@'){
            if(!cnt) {flag = 1; break;}
            if(ss[cnt-1] == '@') {flag = 1; break;}
            ss += s[i];
            cnt++;
            paisi = 1;
        }
        else{
            if(paisi){
                ss += s[i];
                v.push_back(ss);
                ss = "";
                paisi = 0; cnt = 0;
            }
            else {ss += s[i]; cnt++;}
        }
    }

    l = v.size();

    if(l && cnt && !paisi) v[l-1] += ss;

    if(!l || flag) cout << "No solution" << "\n";
    else{
        for(int i = 0; i < l; i++){
            cout << v[i];
            if(i != l-1) cout << ",";
        }
        cout << "\n";
    }

    return 0;
}


#include                        <bits/stdc++.h>
#define   ulli                  unsigned long long int
#define   lli                   long long int
#define   MOD                   1000000007
#define   PI                    acos(-1.0)
#define   UNIQUE(V)             (V).erase(unique(ALL(V), (V).end()) //vector/string etc must need to be sorted
#define   timesave              ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define   ALL(V)                (V).begin(), (V).end()
#define   MEM(a, val)           memset(a, val, sizeof(a))
#define   SORT(v)               sort(v.begin(),v.end())
#define   REV(v)                reverse(v.begin(),v.end())
using     namespace             std;

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    //timesave;

    string s;

    cin >> s;

    int l = s.size();

    string ss = "";
    vector<string> v;

    int paisi = 0, cnt = 0, flag = 0;

    for(int i = 0; i < l; i++){
        if(s[i] == '@'){
            if(!cnt) {flag = 1; break;}
            ss += s[i];
            cnt++;
            paisi = 1;
        }
        else{
            if(paisi){
                ss += s[i];
                v.push_back(ss);
                ss = "";
                paisi = 0; cnt = 0;
            }
            else {ss += s[i]; cnt++;}
        }
    }

    l = v.size();

    if(l && cnt && !paisi) v[l-1] += ss;

    if(!l || flag) cout << "No solution" << "\n";
    else{
        for(int i = 0; i < l; i++){
            cout << v[i];
            if(i != l-1) cout << ",";
        }
        cout << "\n";
    }

    return 0;
}


#include                        <bits/stdc++.h>
#define   ulli                  unsigned long long int
#define   lli                   long long int
#define   MOD                   1000000007
#define   PI                    acos(-1.0)
#define   UNIQUE(V)             (V).erase(unique(ALL(V), (V).end()) //vector/string etc must need to be sorted
#define   timesave              ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define   ALL(V)                (V).begin(), (V).end()
#define   MEM(a, val)           memset(a, val, sizeof(a))
#define   SORT(v)               sort(v.begin(),v.end())
#define   REV(v)                reverse(v.begin(),v.end())
using     namespace             std;

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    //timesave;

    string s;

    cin >> s;

    int l = s.size();

    string ss = "";
    vector<string> v;

    int paisi = 0, cnt = 0, flag = 0;

    for(int i = 0; i < l; i++){
        if(s[i] == '@'){
            if(!cnt) {flag = 1; break;}
            if(s[cnt-1] == '@') {flag = 1; break;}
            ss += s[i];
            cnt++;
            paisi = 1;
        }
        else{
            if(paisi){
                ss += s[i];
                v.push_back(ss);
                ss = "";
                paisi = 0; cnt = 0;
            }
            else {ss += s[i]; cnt++;}
        }
    }

    l = v.size();

    if(l && cnt && !paisi) v[l-1] += ss;

    if(!l || flag) cout << "No solution" << "\n";
    else{
        for(int i = 0; i < l; i++){
            cout << v[i];
            if(i != l-1) cout << ",";
        }
        cout << "\n";
    }

    return 0;
}


#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int main()
{
    ios_base:: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    // ll t;
    // cin>>t;
    // while(t--)
    {
        ll i,j,k,l,m,n;
        string s;
        cin>>s;
        n=s.size();
        if(s[0]=='@'){
          cout<<"No solution";
          return 0;
        }
        ll pos=-2;
        for(i=1;i<n;i++){
            if(s[i]=='@'){
                if(i-pos<=2){
                  cout<<"No solution";
                  return 0;
                }
                pos=i;
            }
        }
        string temp;
        vector<string> anss;
        for(i=0;i<n;i++){
             temp+=s[i];
             if(s[i]=='@'){
                temp+=s[++i];
                anss.push_back(temp);
                //cout<<temp<<'\n';
                temp.clear();
             }
        }
        if(anss.size()==0){
          cout<<"No solution";
          return 0;
        }
        anss[anss.size()-1]+=temp;
        for(i=0;i<anss.size();i++){
            cout<<anss[i];
            if(i!=anss.size()-1){
              cout<<",";
            }
        }
    }
}


#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int main()
{
    ios_base:: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    // ll t;
    // cin>>t;
    // while(t--)
    {
        ll i,j,k,l,m,n;
        string s;
        cin>>s;
        n=s.size();
        if(s[0]=='@'){
          cout<<"No solution";
          return 0;
        }
        ll pos=-2;
        for(i=1;i<n;i++){
            if(s[i]=='@'){
                if(i-pos<=2){
                  cout<<"No solution";
                  return 0;
                }
                pos=i;
            }
        }
        for(i=0;i<n;i++){
            if((s[i]>=97&&s[i]<=121)||s[i]=='@'){
                continue;
            }
            else{
              cout<<"No solution";
              return 0;
            }
        }
        string temp;
        vector<string> anss;
        for(i=0;i<n;i++){
             temp+=s[i];
             if(s[i]=='@'){
                temp+=s[++i];
                anss.push_back(temp);
                //cout<<temp<<'\n';
                temp.clear();
             }
        }
        if(anss.size()==0){
          cout<<"No solution";
          return 0;
        }
        anss[anss.size()-1]+=temp;
        for(i=0;i<anss.size();i++){
            cout<<anss[i];
            if(i!=anss.size()-1){
              cout<<",";
            }
        }
    }
}