#include<bits/stdc++.h>
#define sf(x) scanf("%d",&x)
#define pf(x) printf("%d ",x)
#define sf2(x,y) scanf("%d %d",&x,&y)
#define pf2(x,y) printf("%d %d\n",x,y)
#define sf3(x,y,z) scanf("%d %d %d",&x,&y,&z)
#define pf3(x,y,z) printf("%d %d %d\n",x,y,z)
#define sfc(c) scanf(" %c",&c)
#define pfc(c) printf("%c",c)
#define pb(x) push_back(x)
#define sfl(x) scanf("%lld",&x)
#define mp(x,y) make_pair(x,y)
#define INF 1000000008
#define LLINF ll(1e18+10)
#define ENDL puts("")

#ifdef DBG
#define dbg(x) cout<<'\t'<<#x<<' '<<x<<endl
#else
#define dbg(x)
#endif

#define forn(i,n) for(int i=0; i<n; i++)
 
using namespace std;
 
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef unsigned int uint;
typedef long double ld;
 
 
template<class T>
void printVector(T begin, T end)
{
    for(auto i=begin; i!=end; i++)
    {
        cout<<*i<<' ';
    }
    cout<<endl;
}



int gcd (int a, int b, int & x, int & y) {
	if (a == 0) {
		x = 0; y = 1;
		return b;
	}
	int x1, y1;
	int d = gcd (b%a, a, x1, y1);
	x = y1 - (b / a) * x1;
	y = x1;
	return d;
}





int main()
{
    /*

    /**/
    

    int n;
    sf(n);
    set<int> res;
    int x,y;
    for(int i=1; i<n; i++)
    {
        x=y=0;
        int g=gcd(i,n,x,y);
        if(g==1)
        {
            res.insert(i);
        }
    }
    ll m=1;
    for(auto i: res)
    {
        m=(m*i)%n;
    }
    if(m!=1)
    {
        res.erase(m);
    }
    printf("%d\n",res.size());
    for(auto i: res)
    {
        printf("%d ",i);
    }
    
    
    
    
    return 0;
 
}
 
 
 
 
 
 
 
 
 