#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/trie_policy.hpp>
#include <ext/rope>

using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;

#define fef(i,a,b) for(ll i=a;i<=b;i++)
#define rer(i,a,b) for(ll i=b;i>=a;i--)
#define wew while(true)
#define FILE_IN "D.inp"
#define FILE_OUT "D.out"
#define ofile freopen(FILE_IN,"r",stdin);freopen(FILE_OUT,"w",stdout)
#define fio ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define MOD (ll(1000000007))
#define INF (ll(1000000007))
#define MAXN 300011
#define x first
#define y second
#define pii pair<int,int>
#define piii pair<int,pii>
#define pb push_back
#define endl "\n"
template<typename T> tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update> order_set;
typedef trie<string,null_type,trie_string_access_traits<>,pat_trie_tag,trie_prefix_search_node_update> order_trie;
typedef long long ll;
class DisjointSet{ public:
    vector<int> parent;
    DisjointSet(int n): parent(n) { for(int i=0; i<n; i++) parent[i] = i; }
    void join(int a, int b) { parent[find(b)] = find(a); }
    int find(int a){ return a == parent[a] ? a : parent[a] = find(parent[a]); }
    bool check(int a, int b){ return find(a) == find(b); }
};


//---------END-------//
template<typename T>
    void read(T &X){
        X=0;
        char c;
        int sign=1;
        c=getchar();
        if (c=='-') sign=-1;else X=X*10+c-'0';
        while ((c=getchar()) && ('0'<=c) && (c<='9'))
            X=X*10+c-'0';
    }
ll N,x,M,H,T;
vector<ll> A;
int main(){
    //ofile;
    cin >> N;
    for (ll i=1;i*i<=N;i++) if (N%i==0){
        A.pb(i);
        if (N/i!=i) A.pb(N/i);
    }
    sort(A.begin(),A.end());
    for (ll i:A) cout << i << endl;


}

#include <bits/stdc++.h>
using namespace std;
int main()
{
	string x;
	getline(cin,x);
	int v=0,i=0;
	while(v!=1&&i<x.size())
	{
		if(x[i]=='.')
			v=1;
		i++;
	}
	
	if(v==1)
		for(int j=0;j<i-1;j++)
			cout<<x[j];
	else
		for(int j=0;j<x.size();j++)
			cout<<x[j];
	return 0;
}