stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<stdio.h>

#include<map>

#include<vector>

#include<map>

#include<algorithm>

using namespace std;

char p[10];

int main(){

    map<char,bool>l;

    l.clear();

   scanf("%s",p);

   int s=0;

   for(int i=0;i<4;i++){

    if(!l[p[i]])

        l[p[i]]=true,s++;

   }

   if(s==2)

    printf("Yes\n");

   else

    printf("No\n");

}


// Faster C++ solution for the same problem (measured speedup: 4.937121118831949x):
#include<stdio.h>

#include<string.h>

#include<algorithm>

using namespace std;

char a[5];

int main()

{

	scanf("%s",a);

	int l=strlen(a);

	sort(a,a+4);

	if(a[0]==a[1]&&a[2]==a[3]&&a[0]!=a[2])printf("Yes\n");

	else printf("No\n");

}
// Slower C++ solution:
#include <iostream>

#include <iomanip>

#include <cstdio>

#include <cmath>

#include <string>

#include <vector>

#include <limits>

#include <algorithm>

#include <utility>

#include <sstream>

#include <numeric>

#include <iterator>



using namespace std;



#define repd(i,a,b) for (int i=(a);i<(b);i++)

#define rep(i,n) repd(i,0,n)

// #define ll long long

typedef long long ll;

typedef pair<int, int> P;



const int V = 100005;

vector<int> to[V*2];

bool visited[V*2];

vector<int> cnt;



void dfs(int v){

  if (visited[v]) return;

  visited[v] = true;

  cnt[v/V]++;

  for (int u : to[v]) dfs(u);

}



int main(int argc, const char * argv[]) {



    string s;

    cin >> s;

    

    char first = s[0];

    char second = '\0';



    rep(i,4){

      if(first != s[i]){

        second = s[i];

        break;

      }

    }

    // cout << second << endl;

    int sum1 = 0, sum2 = 0;

    rep(i,4){

      if (first == s[i]){

        sum1 += 1;

      }else if(second == s[i]){

        sum2 += 1;

      }

    }

    bool flag = false;



    if(sum1 == 2 && sum2 ==2) flag = true;



    if (flag){

      puts("Yes");

    }else{

      puts("No");

    }







    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 6.421223048281846x):
#include <iostream>

#include <map>



using namespace std;



#define repd(i,a,b) for (int i=(a);i<(b);++i)

#define rep(i,n) repd(i,0,n)



int main(){

  string s;

  cin >> s;

  map<char, int> mp;

  rep(i, s.size()){

    mp[s[i]] += 1;

  }

  for(auto value: mp){

    if(value.second != 2){

      cout << "No" << endl;

      return 0;

    }

  }

  cout << "Yes" << endl;

  return 0;

}
// Slower C++ solution:
#include <cstdio>

#include <unordered_set>

const int HALF = 2;

const int MAXS = 4;

char S[MAXS + 5];



int main() {

  scanf("%s", S);

  std::unordered_set<char> dict(S, S + MAXS);

  puts((dict.size() == HALF) ? "Yes" : "No");

  return 0;

}

// Faster C++ solution for the same problem (measured speedup: 4.947944509365762x):
#include <cstdio>

#include <unordered_set>

const int MAXA = 26;

const int MAXS = 4;

const int TWO = 2;

int cnt[MAXA]{ };

char S[MAXS + 5];



int main() {

  scanf("%s", S);

  int two = 0;

  for (int i = 0; i < MAXS; ++i) {

    int c = S[i] - 'A';

    ++cnt[c];

    if (cnt[c] == TWO) {

      ++two;

    } else if (cnt[c] > TWO) {

      --two;

    }

  }

  puts((two == TWO) ? "Yes" : "No");

  return 0;

}
// Slower C++ solution:
#include <iostream>

#include <vector>

#include <algorithm>

#include <set>



using namespace std;





int main() {

	char s;

	multiset<char> k;

	set<char> k2;

	for (int i = 0; i < 4; i++) {

		cin >> s;

		k2.insert(s);

		k.insert(s);

	}

	//cout << k2.size() << ' ' << k.count(s) << ' ' << s;

	if (k2.size() == 2 & k.count(s) == 2)

		cout << "Yes";

	else

		cout << "No";

}

// Faster C++ solution for the same problem (measured speedup: 5.373313175895918x):
#include<stdio.h>

int main(){



    int a=0,b=0,c=0,i;

    char st[5];



    char st1,st2;



    scanf("%s", &st);

    st1 = st[0];



    for(i=0;i<4;i++){

            if(st[i] == st1){

                a++;

            }else{

                if(b==0){

                    st2=st[i];

                }

                if(st2==st[i]){

                    b++;

                }else{

                    c++;

                }

            }

    }

    if(a==2 && b==2 && c==0){

        printf("Yes\n");

    }else{

        printf("No\n");

    }



    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <vector>

#include <algorithm>

#include <set>



using namespace std;





int main() {

	char s;

	multiset<char> k;

	set<char> k2;

	for (int i = 0; i < 4; i++) {

		cin >> s;

		k2.insert(s);

		k.insert(s);

	}

	//cout << k2.size() << ' ' << k.count(s) << ' ' << s;

	if (k2.size() == 2 & k.count(s) == 2)

		cout << "Yes";

	else

		cout << "No";

}

// Faster C++ solution for the same problem (measured speedup: 5.3738823678925645x):
#include<stdio.h>

int main(){

	char a[8],c;

	scanf("%s",a);

	for(int i=0;i<3;i++)

	for(int j=0;j<3-i;j++)

	if(a[j]<a[j+1])

	{

	c=a[j];

	a[j]=a[j+1];

	a[j+1]=c;

    }

if(a[0]==a[1]&&a[2]==a[3]&&a[0]!=a[2]&&a[0]!=a[3])

	printf("Yes\n");

	else

	printf("No\n");

	return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

#define show(x) cout << #x << " : " << x << endl;



int main ()

{

 string s;

 cin >> s;

 map < char, int > mp;

 int i, cnt = 0;

 for(i = 0; i < 4; i++)

 {

   mp[s[i]]++;

   if(mp[s[i]] == 2) cnt++;

   if(cnt == 2)

   {

     cout << "Yes" << endl;

     exit(0);

   }

 }

 cout << "No" << endl;

}

// Faster C++ solution for the same problem (measured speedup: 5.37473625349657x):
#include<cstdio>

#include<cstring>

using namespace std;

char a[4];

int num[180];

int main()

{

	int pd=0;

	scanf("%s",&a);

	for(int i=0;i<4;i++)

	{

		num[a[i]]++;

	}

	for(int i=0;i<180;i++)

	{

		if(num[i]%2!=0)

		pd=1;

		if(num[i]>2)

		pd=1;

	}

	if(pd==1)

	printf("No");

	else

	printf("Yes");

}
// Slower C++ solution:
#include<iostream>

#include<algorithm>

using namespace std;

int main()

{

    string s;

    cin>>s;

    sort(s.begin(),s.end());



    if(s[0]==s[1] && s[2]==s[3] && s[1]!=s[2])

        {

    cout<<"Yes"<<endl;

        return 0;

        }

        cout<<"No"<<endl;

}


// Faster C++ solution for the same problem (measured speedup: 5.3161042116358255x):
#include<cstdio>

#include<cstring>

using namespace std;

char a[4];

int num[180];

int main()

{

	int pd=0;

	scanf("%s",&a);

	for(int i=0;i<4;i++)

	{

		num[a[i]]++;

	}

	for(int i=0;i<180;i++)

	{

		if(num[i]%2!=0)

		pd=1;

		if(num[i]>2)

		pd=1;

	}

	if(pd==1)

	printf("No");

	else

	printf("Yes");

}
// Slower C++ solution:
#include <iostream>

#include <set>

#include <string>



using namespace std;



int main()

{

	set<char> s;

	string str;

	cin >> str;

	for (auto val : str)

		s.insert(val);

	(s.size() == 2) ? cout << "Yes" : cout << "No";

	system("pause");

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.375857907156626x):
#include<cstdio>

#include<cstring>

using namespace std;

char a[4];

int num[180];

int main()

{

	int pd=0;

	scanf("%s",&a);

	for(int i=0;i<4;i++)

	{

		num[a[i]]++;

	}

	for(int i=0;i<180;i++)

	{

		if(num[i]%2!=0)

		pd=1;

		if(num[i]>2)

		pd=1;

	}

	if(pd==1)

	printf("No");

	else

	printf("Yes");

}
// Slower C++ solution:
#include<iostream>

using namespace std;



bool IsSquare(int N)

{

    int i;

    for(i=1; N>0; i+=2)  //变化步长为2， 初值为1，一直减到N大于0

    {

        N-=i;

    }

    if(N==0)

        return true;  //如果N减到最后，恰好等于0，就是平方数

    else

        return false;  //否则，就不是平方数

}



int main()

{

    int n;

    cin>>n;

    

    while(n){

        if(IsSquare(n)){

           cout << n;

            break;

        }

       else n--;

        

    }

    

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 12.942365800278004x):
#include <cstdio>

#include <cstring>

#include <cmath>

using namespace std;

int main() {

    int n;

    scanf("%d", &n);

    n = sqrt(n);

    printf("%d\n", n * n);

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <cstring>

#include <algorithm>

#include <cstring>

#include <cstdlib>

#include <cmath>

#include <queue>

using namespace std;



long long N;



int main()

{

    scanf("%lld",&N);

    long long a=sqrt(N);

    long long sum=a*a;

    printf("%lld",sum);

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 4.655851076854274x):
#include <cstdio>

#include <cstring>

#include <cmath>

using namespace std;

int main() {

    int n;

    scanf("%d", &n);

    n = sqrt(n);

    printf("%d\n", n * n);

    return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

#define REP(i,n) for(int i=0;i<n;i++)

#define LOOP(i,x,n) for(int i=x;i<n;i++)

#define ALL(v) (v).begin(),(v).end()

#define PB push_back

#define MP make_pair

#define FIR first

#define SEC second

#define int long long

using namespace std;

const int MOD=1000000007;

const int INF=1000000009;



signed main(){

  int n;

  cin>>n;

  vector<int> v;

  REP(i,35000)v.PB(i*i);

  LOOP(i,1,35000){

    if(v[i]>n){

      cout<<v[i-1]<<endl;

      return 0;

    }

  }

  return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.388306040660023x):
#include<bits/stdc++.h>

#define REP(i,n) for(int i=0;i<n;i++)

#define LOOP(i,x,n) for(int i=x;i<n;i++)

#define ALL(v) (v).begin(),(v).end()

#define PB push_back

#define MP make_pair

#define FIR first

#define SEC second

//#define int long long

using namespace std;

const int MOD=1000000007;

const int INF=1000000009;



int main(){

  int n;

  cin>>n;

  vector<int> v;

  REP(i,35000)v.PB(i*i);

  LOOP(i,1,35000){

    if(v[i]>n){

      cout<<v[i-1]<<endl;

      return 0;

    }

  }

  return 0;

}
// Slower C++ solution:
#include<iostream>

#include<cmath>

using namespace std;

long long a[100005];

int n;

int main()

{

	for(int i=1;i<=100000;i++)

		a[i]=i*i;

	cin>>n;

	for(int i=1;;i++)

	{

		if(a[i]>n)

		{

			cout<<a[i-1]<<endl;

			return 0;

		}

	}

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 1.7967317207724618x):
#include<bits/stdc++.h>

using namespace std;int main(){double a;scanf("%lf",&a);printf("%.0lf\n",pow(floor(sqrt(a)),2.0));return 0;}
// Slower C++ solution:
#include <iostream>



using namespace std;



int main() {

    int N;

    cin >> N;

    long Squ[100100];

    for (int i = 1; i < 100000; i++) {

        Squ[i] = i * i;

    }

    for (int i = 1; i < 100000; i++) {

        if (N < Squ[i]){

        cout << Squ[i - 1] << endl;

            return 0;

        }

    }

}

// Faster C++ solution for the same problem (measured speedup: 1.809893861525939x):
#include <iostream>

#include <cmath>



using namespace std;



int main() {

    int N;

    cin >> N;

    int m = sqrt(N);

    cout << m*m << endl;

}
// Slower C++ solution:
/***

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 */

#include <iostream>

#include <queue>

#include <cstdio>

#include <cstdlib>

#include <algorithm>

#include <cstring>

#include <string>

#include <stack>

using namespace std;

//int n,m,x,y;

//char a[1010][1010];

//int vis[1010][1010];

//void dfs()

//{

//

//}

//int main()

//{

//    while(~scanf("%d%d",&n,&m))

//    {

//        for(int i=0;i<n;i++)

//        scanf("%s",a[i]);

//        for(int i=0;i<n;i++)

//            for(int j=0;j<m;j++)

//        {

//            if(a[i][j]=='*')

//                vis[i][j]=2;

//                if(a[i][j]=='+')

//                    vis[i][j]=1;

//                if(a[i][j]=='F')

//                    vis[i][j]=3;

//                if(a[i][j]=='G')

//                {

//                    x=i;

//                    y=j;

//                }

//                if(i==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(i==n&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==m&&a[i][j]=='+')

//                    vis[i][j]=4;

//

//        }

//

//     for(int i=0;i<n;i++)

//            {

//                for(int j=0;j<m;j++)

//                printf("%d ",vis[i][j]);

//                printf("\n");

//            }

// }

//    return 0;

//}

long long a[100000];

int main()

{

    long long n;

   for(int i=1;i<=100000;i++)

   a[i]=i*i;

   while(~scanf("%lld",&n))

   {int flag=0;

       for(int i=1;i<100000;i++)

       {

           if(a[i]==n)

           {

               printf("%lld\n",a[i]);

               break;

           }

           if(a[i]>n)

           {

               printf("%lld\n",a[i-1]);

               break;

           }

       }

   }



    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 1.8012208251021709x):
#include <iostream>

#include <cstdio>

#include <cstdlib>

#include <algorithm>

#include <string.h>

#include <math.h>

using namespace std;

int main()

{

    long long n;

    while(~scanf("%lld",&n))

    {

        long long  s=sqrt(n);

        if(s*s==n)

        {

            printf("%lld\n",n);

        }

        else

            printf("%lld\n",s*s);

    }

    return 0;

}
// Slower C++ solution:
/***

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 */

#include <iostream>

#include <queue>

#include <cstdio>

#include <cstdlib>

#include <algorithm>

#include <cstring>

#include <string>

#include <stack>

using namespace std;

//int n,m,x,y;

//char a[1010][1010];

//int vis[1010][1010];

//void dfs()

//{

//

//}

//int main()

//{

//    while(~scanf("%d%d",&n,&m))

//    {

//        for(int i=0;i<n;i++)

//        scanf("%s",a[i]);

//        for(int i=0;i<n;i++)

//            for(int j=0;j<m;j++)

//        {

//            if(a[i][j]=='*')

//                vis[i][j]=2;

//                if(a[i][j]=='+')

//                    vis[i][j]=1;

//                if(a[i][j]=='F')

//                    vis[i][j]=3;

//                if(a[i][j]=='G')

//                {

//                    x=i;

//                    y=j;

//                }

//                if(i==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(i==n&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==m&&a[i][j]=='+')

//                    vis[i][j]=4;

//

//        }

//

//     for(int i=0;i<n;i++)

//            {

//                for(int j=0;j<m;j++)

//                printf("%d ",vis[i][j]);

//                printf("\n");

//            }

// }

//    return 0;

//}

long long a[100000];

int main()

{

    long long n;

   for(int i=1;i<=100000;i++)

   a[i]=i*i;

   while(~scanf("%lld",&n))

   {int flag=0;

       for(int i=1;i<100000;i++)

       {

           if(a[i]==n)

           {

               printf("%lld\n",a[i]);

               break;

           }

           if(a[i]>n)

           {

               printf("%lld\n",a[i-1]);

               break;

           }

       }

   }



    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 1.8103286702884671x):
#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

#include<string.h>

#include<cmath>

using namespace std;

int main()

{

    long long n,m;

    scanf("%lld",&n);

    for(long long i = 1; i*i <= n; i++)

        m = i * i;

    printf("%lld\n",m);

}
// Slower C++ solution:
/***

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 */

#include <iostream>

#include <queue>

#include <cstdio>

#include <cstdlib>

#include <algorithm>

#include <cstring>

#include <string>

#include <stack>

using namespace std;

//int n,m,x,y;

//char a[1010][1010];

//int vis[1010][1010];

//void dfs()

//{

//

//}

//int main()

//{

//    while(~scanf("%d%d",&n,&m))

//    {

//        for(int i=0;i<n;i++)

//        scanf("%s",a[i]);

//        for(int i=0;i<n;i++)

//            for(int j=0;j<m;j++)

//        {

//            if(a[i][j]=='*')

//                vis[i][j]=2;

//                if(a[i][j]=='+')

//                    vis[i][j]=1;

//                if(a[i][j]=='F')

//                    vis[i][j]=3;

//                if(a[i][j]=='G')

//                {

//                    x=i;

//                    y=j;

//                }

//                if(i==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(i==n&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==m&&a[i][j]=='+')

//                    vis[i][j]=4;

//

//        }

//

//     for(int i=0;i<n;i++)

//            {

//                for(int j=0;j<m;j++)

//                printf("%d ",vis[i][j]);

//                printf("\n");

//            }

// }

//    return 0;

//}

long long a[100000];

int main()

{

    long long n;

   for(int i=1;i<=100000;i++)

   a[i]=i*i;

   while(~scanf("%lld",&n))

   {int flag=0;

       for(int i=1;i<100000;i++)

       {

           if(a[i]==n)

           {

               printf("%lld\n",a[i]);

               break;

           }

           if(a[i]>n)

           {

               printf("%lld\n",a[i-1]);

               break;

           }

       }

   }



    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 0.6508154305396631x):
#include <iostream>

#include <queue>

#include <cstdio>

#include <cstdlib>

#include <algorithm>

#include <cstring>

#include<cmath>

using namespace std;

bool fun(int num)

{

    for(int i=1; num>0; i+=2)

    {

        num -= i;

    }

    if(num==0)

    {

        return true;

    }

    else

    {

        return false;

    }

}

int main()

{

    long long n;

    while(~scanf("%lld",&n))

    {

        for(long long i=n; i>=0; i--)

            if(fun(i))

            {

                printf("%lld\n",i);

                break;

            }



    }

    return 0;

}
// Slower C++ solution:
/***

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 *      百年修得同船渡，千年修得代码重.

 */

#include <iostream>

#include <queue>

#include <cstdio>

#include <cstdlib>

#include <algorithm>

#include <cstring>

#include <string>

#include <stack>

using namespace std;

//int n,m,x,y;

//char a[1010][1010];

//int vis[1010][1010];

//void dfs()

//{

//

//}

//int main()

//{

//    while(~scanf("%d%d",&n,&m))

//    {

//        for(int i=0;i<n;i++)

//        scanf("%s",a[i]);

//        for(int i=0;i<n;i++)

//            for(int j=0;j<m;j++)

//        {

//            if(a[i][j]=='*')

//                vis[i][j]=2;

//                if(a[i][j]=='+')

//                    vis[i][j]=1;

//                if(a[i][j]=='F')

//                    vis[i][j]=3;

//                if(a[i][j]=='G')

//                {

//                    x=i;

//                    y=j;

//                }

//                if(i==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(i==n&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==0&&a[i][j]=='+')

//                    vis[i][j]=4;

//                if(j==m&&a[i][j]=='+')

//                    vis[i][j]=4;

//

//        }

//

//     for(int i=0;i<n;i++)

//            {

//                for(int j=0;j<m;j++)

//                printf("%d ",vis[i][j]);

//                printf("\n");

//            }

// }

//    return 0;

//}

long long a[100000];

int main()

{

    long long n;

   for(int i=1;i<=100000;i++)

   a[i]=i*i;

   while(~scanf("%lld",&n))

   {int flag=0;

       for(int i=1;i<100000;i++)

       {

           if(a[i]==n)

           {

               printf("%lld\n",a[i]);

               break;

           }

           if(a[i]>n)

           {

               printf("%lld\n",a[i-1]);

               break;

           }

       }

   }



    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 1.8099608836374876x):
#include<iostream>

#include<cstdio>

#include<cstring>

#include<queue>

using namespace std;

int main()

{

    long long n,step=-1,i;

    scanf("%lld",&n);

    for(i=1;i*i<=n;i++)

    {

        if(i*i<=n&&i*i>step)

        {

            step=i*i;

        }

    }

    printf("%lld\n",step);

}