Problem: Vasya is an active Internet user. One day he came across an Internet resource he liked, so he wrote its address in the notebook. We know that the address of the written resource has format:

<protocol>://<domain>.ru[/<context>]

where:

  * <protocol> can equal either "http" (without the quotes) or "ftp" (without the quotes), 
  * <domain> is a non-empty string, consisting of lowercase English letters, 
  * the /<context> part may not be present. If it is present, then <context> is a non-empty string, consisting of lowercase English letters. 



If string <context> isn't present in the address, then the additional character "/" isn't written. Thus, the address has either two characters "/" (the ones that go before the domain), or three (an extra one in front of the context).

When the boy came home, he found out that the address he wrote in his notebook had no punctuation marks. Vasya must have been in a lot of hurry and didn't write characters ":", "/", ".".

Help Vasya to restore the possible address of the recorded Internet resource.

Input

The first line contains a non-empty string that Vasya wrote out in his notebook. This line consists of lowercase English letters only. 

It is guaranteed that the given string contains at most 50 letters. It is guaranteed that the given string can be obtained from some correct Internet resource address, described above.

Output

Print a single line — the address of the Internet resource that Vasya liked. If there are several addresses that meet the problem limitations, you are allowed to print any of them.

Examples

Input

httpsunrux


Output

http://sun.ru/x


Input

ftphttprururu


Output

ftp://http.ru/ruru

Note

In the second sample there are two more possible answers: "ftp://httpruru.ru" and "ftp://httpru.ru/ru".

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
const int inf = 0x3f3f3f3f;
const long long inf64 = 0x3f3f3f3f3f3f3f3fLL;
const double eps = 1e-6;
template <typename A, typename B>
ostream& operator<<(ostream& os, const pair<A, B>& p) {
  return os << p.first << "," << p.second;
}
template <typename A>
ostream& operator<<(ostream& os, const vector<A>& v) {
  for (int i = 0; i < v.size(); i++) {
    os << v[i] << ";";
  }
  return os;
}
template <typename A>
ostream& operator<<(ostream& os, const set<A>& v) {
  for (typename set<A>::const_iterator it = v.begin(); it != v.end(); ++it) {
    os << *it << ";";
  }
  return os;
}
template <typename A, typename B>
ostream& operator<<(ostream& os, const map<A, B>& v) {
  for (typename map<A, B>::const_iterator it = v.begin(); it != v.end(); ++it) {
    os << it->first << "=" << it->second << ";";
  }
  return os;
}
void solve234(string s) {
  int p = s.find("ru", 1);
  cout << s.substr(0, p);
  cout << ".ru";
  if (p + 2 < s.size()) {
    cout << "/" << s.substr(p + 2);
  }
  cout << endl;
}
int main() {
  string s;
  cin >> s;
  if (s.size() > 4 && s[0] == 'h') {
    cout << "http://";
    solve234(s.substr(4));
  } else if (s.size() > 3 && s[0] == 'f') {
    cout << "ftp://";
    solve234(s.substr(3));
  }
  return 0;
}