import java.io.*;
import java.util.*;
import java.lang.Math;

public class Main{
	static BufferedReader reader;
	static StringTokenizer tokenizer;
	static PrintWriter writer;

	static int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	static long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	static double nextDouble() throws IOException {
		return Double.parseDouble(nextToken());
	}

	static String nextToken() throws IOException {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	static String nexts() throws IOException {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	}

	//String str=nextToken();
	//String[] s = str.split("\\s+");

	public static int gcd(int x, int y){
		if (y == 0) return x; else return gcd(y, x % y);
	}

	public static boolean isPrime(int n) 
	    { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } 

	public static void shuffle(int[] A) {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	 public static long power(int x, long n)
	{
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	}
	 static long ncr(int n, int k)  
   	 { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    }
	static int first(int arr[], int low, int high, int x, int n)   //Returns first index of x in sorted arr else -1
  	  { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } 

	static int last(int arr[], int low, int high, int x, int n)     //Returns last index of x in sorted arr else -1
 	   { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } 
	static int binarys(int[] arr, int l, int r, int x){
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	}
	 static class R implements Comparable<R>{
	        int x, y;
	        public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        }
	        public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		}
	    }   
	// int t=a[i];
	// a[i]=a[j];
	// a[j]=t;
	//double d=Math.sqrt(Math.pow(Math.abs(x2-x1),2)+Math.pow(Math.abs(y2-y1),2));
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	}
	
	private static void solve() throws IOException {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 }
	//}
} import java.io.*; io.* java import java.util.*; util.* java import java.lang.Math; Math java.lang public class Main{
	static BufferedReader reader;
	static StringTokenizer tokenizer;
	static PrintWriter writer;

	static int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	static long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	static double nextDouble() throws IOException {
		return Double.parseDouble(nextToken());
	}

	static String nextToken() throws IOException {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	static String nexts() throws IOException {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	}

	//String str=nextToken();
	//String[] s = str.split("\\s+");

	public static int gcd(int x, int y){
		if (y == 0) return x; else return gcd(y, x % y);
	}

	public static boolean isPrime(int n) 
	    { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } 

	public static void shuffle(int[] A) {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	 public static long power(int x, long n)
	{
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	}
	 static long ncr(int n, int k)  
   	 { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    }
	static int first(int arr[], int low, int high, int x, int n)   //Returns first index of x in sorted arr else -1
  	  { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } 

	static int last(int arr[], int low, int high, int x, int n)     //Returns last index of x in sorted arr else -1
 	   { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } 
	static int binarys(int[] arr, int l, int r, int x){
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	}
	 static class R implements Comparable<R>{
	        int x, y;
	        public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        }
	        public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		}
	    }   
	// int t=a[i];
	// a[i]=a[j];
	// a[j]=t;
	//double d=Math.sqrt(Math.pow(Math.abs(x2-x1),2)+Math.pow(Math.abs(y2-y1),2));
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	}
	
	private static void solve() throws IOException {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 }
	//}
} Main static BufferedReader reader; reader static StringTokenizer tokenizer; tokenizer static PrintWriter writer; writer static int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	} nextInt {
		return Integer.parseInt(nextToken());
	} return Integer.parseInt(nextToken()); Integer.parseInt(nextToken()) Integer.parseInt Integer nextToken() nextToken static long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	} nextLong {
		return Long.parseLong(nextToken());
	} return Long.parseLong(nextToken()); Long.parseLong(nextToken()) Long.parseLong Long nextToken() nextToken static double nextDouble() throws IOException {
		return Double.parseDouble(nextToken());
	} nextDouble {
		return Double.parseDouble(nextToken());
	} return Double.parseDouble(nextToken()); Double.parseDouble(nextToken()) Double.parseDouble Double nextToken() nextToken static String nextToken() throws IOException {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	} nextToken {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	} while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		} tokenizer == null || !tokenizer.hasMoreTokens() tokenizer == null tokenizer null !tokenizer.hasMoreTokens() tokenizer.hasMoreTokens() tokenizer.hasMoreTokens tokenizer {
			tokenizer = new StringTokenizer(reader.readLine());
		} tokenizer = new StringTokenizer(reader.readLine()) tokenizer new StringTokenizer(reader.readLine()) return tokenizer.nextToken(); tokenizer.nextToken() tokenizer.nextToken tokenizer static String nexts() throws IOException {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	} nexts {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	} tokenizer = new StringTokenizer(reader.readLine()) tokenizer new StringTokenizer(reader.readLine()) String s=""; s "" while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		} tokenizer.hasMoreTokens() tokenizer.hasMoreTokens tokenizer {
			s+=tokenizer.nextElement()+" ";
		} s+=tokenizer.nextElement()+" " s tokenizer.nextElement()+" " tokenizer.nextElement() tokenizer.nextElement tokenizer " " return s; s public static int gcd(int x, int y){
		if (y == 0) return x; else return gcd(y, x % y);
	} gcd {
		if (y == 0) return x; else return gcd(y, x % y);
	} if (y == 0) return x; else return gcd(y, x % y); y == 0 y 0 return x; x return gcd(y, x % y); gcd(y, x % y) gcd y x % y x y int x x int y y public static boolean isPrime(int n) 
	    { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } isPrime { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } if (n <= 1){
		 return false; } n <= 1 n 1 {
		 return false; } return false; false if (n <= 3){
		 return true; } n <= 3 n 3 {
		 return true; } return true; true if (n % 2 == 0 || n % 3 == 0){
		 return false; } n % 2 == 0 || n % 3 == 0 n % 2 == 0 n % 2 n 2 0 n % 3 == 0 n % 3 n 3 0 {
		 return false; } return false; false for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            } int i = 5; int i = 5; i 5 i * i <= n i * i i i n i = i + 6 i = i + 6 i i + 6 i 6 {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            } {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            } if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  } n % i == 0 || n % (i + 2) == 0 n % i == 0 n % i n i 0 n % (i + 2) == 0 n % (i + 2) n (i + 2) i 2 0 {
	            	return false;  } return false; false return true; true int n n public static void shuffle(int[] A) {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	} shuffle {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	} for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		} int i = 0; int i = 0; i 0 i < A.length i A.length A A.length i++ i++ i {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		} {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		} int j = (int)(i * Math.random()); j (int)(i * Math.random()) i Math.random() Math.random Math int tmp = A[i]; tmp A[i] A i A[i] = A[j] A[i] A i A[j] A j A[j] = tmp A[j] A j tmp int[] A A public static long power(int x, long n)
	{
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	} power {
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	} long mod = 1000000007; mod 1000000007 if (n == 0) {
			return 1;
		} n == 0 n 0 {
			return 1;
		} return 1; 1 long pow = power(x, n / 2); pow power(x, n / 2) power x n / 2 n 2 if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		} (n & 1) == 1 (n & 1) n 1 1 {
			return (x * pow * pow)%mod;
		} return (x * pow * pow)%mod; (x * pow * pow)%mod (x * pow * pow) x * pow * pow x pow pow mod return (pow * pow)%mod; (pow * pow)%mod (pow * pow) pow pow mod int x x long n n static long ncr(int n, int k)  
   	 { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    } ncr { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    } long res = 1; res 1 if (k > n - k) { 
     		       k = n - k; 
      		  } k > n - k k n - k n k { 
     		       k = n - k; 
      		  } k = n - k k n - k n k for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } int i = 0; int i = 0; i 0 i < k i k ++i ++i i { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } res *= (n - i) res (n - i) n i res /= (i + 1) res (i + 1) i 1 return res; res int n n int k k static int first(int arr[], int low, int high, int x, int n)   //Returns first index of x in sorted arr else -1
  	  { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } first { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } high >= low high low { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } int mid =low + (high - low)/2; mid low + (high - low)/2 low (high - low)/2 (high - low) high low 2 if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); ( mid == 0 || x > arr[mid-1]) && arr[mid] == x ( mid == 0 || x > arr[mid-1]) mid == 0 mid 0 x > arr[mid-1] x arr[mid-1] arr mid-1 mid 1 arr[mid] == x arr[mid] arr mid x return mid; mid if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); x > arr[mid] x arr[mid] arr mid return first(arr, (mid + 1), high, x, n); first(arr, (mid + 1), high, x, n) first arr (mid + 1) mid 1 high x n return first(arr, low, (mid -1), x, n); first(arr, low, (mid -1), x, n) first arr low (mid -1) mid 1 x n return -1; -1 1 int arr[] arr int low low int high high int x x int n n static int last(int arr[], int low, int high, int x, int n)     //Returns last index of x in sorted arr else -1
 	   { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } last { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } high >= low high low { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } int mid = low + (high - low)/2; mid low + (high - low)/2 low (high - low)/2 (high - low) high low 2 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n); ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ( mid == n-1 || x < arr[mid+1]) mid == n-1 mid n-1 n 1 x < arr[mid+1] x arr[mid+1] arr mid+1 mid 1 arr[mid] == x arr[mid] arr mid x return mid; mid if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n); x < arr[mid] x arr[mid] arr mid return last(arr, low, (mid -1), x, n); last(arr, low, (mid -1), x, n) last arr low (mid -1) mid 1 x n return last(arr, (mid + 1), high, x, n); last(arr, (mid + 1), high, x, n) last arr (mid + 1) mid 1 high x n return -1; -1 1 int arr[] arr int low low int high high int x x int n n static int binarys(int[] arr, int l, int r, int x){
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	} binarys {
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	} while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  } l<=r l r {
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  } int mid = l+(r-l)/2; mid l+(r-l)/2 l (r-l)/2 (r-l) r l 2 if(arr[mid]==x){
          	      return x;
         	   } arr[mid]==x arr[mid] arr mid x {
          	      return x;
         	   } return x; x if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 } arr[mid]<x arr[mid] arr mid x {
           	     l=mid+1;
           	 } l=mid+1 l mid+1 mid 1 {
            	    r=mid-1;
           	 } r=mid-1 r mid-1 mid 1 return -1; -1 1 int[] arr arr int l l int r r int x x // int t=a[i];
	// a[i]=a[j];
	// a[j]=t;
	//double d=Math.sqrt(Math.pow(Math.abs(x2-x1),2)+Math.pow(Math.abs(y2-y1),2));
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	} main {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	} reader = new BufferedReader(new InputStreamReader(System.in)) reader new BufferedReader(new InputStreamReader(System.in)) tokenizer = null tokenizer null writer = new PrintWriter(System.out) writer new PrintWriter(System.out) solve() solve reader.close() reader.close reader writer.close() writer.close writer String[] args args private static void solve() throws IOException {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 } solve {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 } int n = nextInt(); n nextInt() nextInt if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      } n==1 n 1 {
              writer.println("0");
            } writer.println("0") writer.println writer "0" {
        writer.println("1");
      } writer.println("1") writer.println writer "1" static class R implements Comparable<R>{
	        int x, y;
	        public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        }
	        public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		}
	    } R int x x y; y public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        } R {
	            this.x = x;
	            this.y = y;
	        } this.x = x this.x this this.x x this.y = y this.y this this.y y int x x int y y public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		} compareTo {
            		return x-o.x;     //Increasing order(Which is usually required)
        		} return x-o.x;     //Increasing order(Which is usually required) x-o.x x o.x o o.x R o o Comparable public class Main{
	static BufferedReader reader;
	static StringTokenizer tokenizer;
	static PrintWriter writer;

	static int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	static long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	static double nextDouble() throws IOException {
		return Double.parseDouble(nextToken());
	}

	static String nextToken() throws IOException {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	static String nexts() throws IOException {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	}

	//String str=nextToken();
	//String[] s = str.split("\\s+");

	public static int gcd(int x, int y){
		if (y == 0) return x; else return gcd(y, x % y);
	}

	public static boolean isPrime(int n) 
	    { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } 

	public static void shuffle(int[] A) {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	 public static long power(int x, long n)
	{
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	}
	 static long ncr(int n, int k)  
   	 { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    }
	static int first(int arr[], int low, int high, int x, int n)   //Returns first index of x in sorted arr else -1
  	  { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } 

	static int last(int arr[], int low, int high, int x, int n)     //Returns last index of x in sorted arr else -1
 	   { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } 
	static int binarys(int[] arr, int l, int r, int x){
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	}
	 static class R implements Comparable<R>{
	        int x, y;
	        public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        }
	        public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		}
	    }   
	// int t=a[i];
	// a[i]=a[j];
	// a[j]=t;
	//double d=Math.sqrt(Math.pow(Math.abs(x2-x1),2)+Math.pow(Math.abs(y2-y1),2));
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	}
	
	private static void solve() throws IOException {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 }
	//}
} public class Main{
	static BufferedReader reader;
	static StringTokenizer tokenizer;
	static PrintWriter writer;

	static int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	static long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	static double nextDouble() throws IOException {
		return Double.parseDouble(nextToken());
	}

	static String nextToken() throws IOException {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	static String nexts() throws IOException {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	}

	//String str=nextToken();
	//String[] s = str.split("\\s+");

	public static int gcd(int x, int y){
		if (y == 0) return x; else return gcd(y, x % y);
	}

	public static boolean isPrime(int n) 
	    { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } 

	public static void shuffle(int[] A) {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	 public static long power(int x, long n)
	{
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	}
	 static long ncr(int n, int k)  
   	 { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    }
	static int first(int arr[], int low, int high, int x, int n)   //Returns first index of x in sorted arr else -1
  	  { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } 

	static int last(int arr[], int low, int high, int x, int n)     //Returns last index of x in sorted arr else -1
 	   { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } 
	static int binarys(int[] arr, int l, int r, int x){
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	}
	 static class R implements Comparable<R>{
	        int x, y;
	        public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        }
	        public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		}
	    }   
	// int t=a[i];
	// a[i]=a[j];
	// a[j]=t;
	//double d=Math.sqrt(Math.pow(Math.abs(x2-x1),2)+Math.pow(Math.abs(y2-y1),2));
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	}
	
	private static void solve() throws IOException {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 }
	//}
} Main
import java.io.*;
import java.util.*;
import java.lang.Math;

public class Main{
	static BufferedReader reader;
	static StringTokenizer tokenizer;
	static PrintWriter writer;

	static int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	static long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	static double nextDouble() throws IOException {
		return Double.parseDouble(nextToken());
	}

	static String nextToken() throws IOException {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	static String nexts() throws IOException {
	  	  tokenizer = new StringTokenizer(reader.readLine());
	   	 String s="";
	   	 while (tokenizer.hasMoreTokens()) {
			s+=tokenizer.nextElement()+" ";
		}
		return s;
	}

	//String str=nextToken();
	//String[] s = str.split("\\s+");

	public static int gcd(int x, int y){
		if (y == 0) return x; else return gcd(y, x % y);
	}

	public static boolean isPrime(int n) 
	    { 
	        // Corner cases 
	        if (n <= 1){
		 return false; }
	        if (n <= 3){
		 return true; }
	      
	        // This is checked so that we can skip  
	        // middle five numbers in below loop 
	        if (n % 2 == 0 || n % 3 == 0){
		 return false; }
	      
	        for (int i = 5; i * i <= n; i = i + 6) {    //Checking 6i+1 & 6i-1
	            if (n % i == 0 || n % (i + 2) == 0) {
	            	return false;  }
	            }
			//O(sqrt(n))
	        return true; 
	    } 

	public static void shuffle(int[] A) {
		for (int i = 0; i < A.length; i++) {
			int j = (int)(i * Math.random());
			int tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	 public static long power(int x, long n)
	{
	    long mod = 1000000007;
		if (n == 0) {
			return 1;
		}

		long pow = power(x, n / 2);

		if ((n & 1) == 1) {
			return (x * pow * pow)%mod;
		}
		return (pow * pow)%mod;
	}
	 static long ncr(int n, int k)  
   	 { 
      
     		  long res = 1; 
  		   // Since C(n, k) = C(n, n-k)  
 		       if (k > n - k) { 
     		       k = n - k; 
      		  } 
  		  // Calculate value of [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]  
     		   for (int i = 0; i < k; ++i) { 
        		    res *= (n - i); 
         		   res /= (i + 1); 
     		   } 
  		  return res; 
    }
	static int first(int arr[], int low, int high, int x, int n)   //Returns first index of x in sorted arr else -1
  	  { 
    	  if(high >= low) 
     	 { 
      	  
        	  int mid =low + (high - low)/2;   
      	  if( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x) 
      		    return mid; 
       	 else if(x > arr[mid]) 
       		   return first(arr, (mid + 1), high, x, n); 
        	else
      		    return first(arr, low, (mid -1), x, n); 
     	 } 
    		  return -1; 
  	  } 

	static int last(int arr[], int low, int high, int x, int n)     //Returns last index of x in sorted arr else -1
 	   { 
   	   if(high >= low) 
     	 { 
      	    
     	   int mid = low + (high - low)/2;  
       	 if( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x ) 
       		   return mid; 
      	  else if(x < arr[mid]) 
     		     return last(arr, low, (mid -1), x, n); 
     	   else
    		      return last(arr, (mid + 1), high, x, n);       
    	  } 
     		 return -1; 
	    } 
	static int binarys(int[] arr, int l, int r, int x){
    	    while(l<=r){
         	   int mid = l+(r-l)/2;
          	  if(arr[mid]==x){
          	      return x;
         	   }
          	  if(arr[mid]<x){
           	     l=mid+1;
           	 }
           	 else{
            	    r=mid-1;
           	 }
      	  }
	return -1;
    	}
	 static class R implements Comparable<R>{
	        int x, y;
	        public  R(int x, int y) {
	            this.x = x;
	            this.y = y;
	        }
	        public int compareTo(R o) {
            		return x-o.x;     //Increasing order(Which is usually required)
        		}
	    }   
	// int t=a[i];
	// a[i]=a[j];
	// a[j]=t;
	//double d=Math.sqrt(Math.pow(Math.abs(x2-x1),2)+Math.pow(Math.abs(y2-y1),2));
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		tokenizer = null;
		writer = new PrintWriter(System.out);
		solve();
		reader.close();
		writer.close();
	}
	
	private static void solve() throws IOException {
		//int t = nextInt();
		//while(t-->0){
			//long n = nextLong();
			//String s= nextToken();
			//long[] a=new long[n];
			//ArrayList<Integer> ar=new ArrayList<Integer>();
			//HashSet<Integer> set=new HashSet<Integer>();
			//HashMap<Integer,String> h=new HashMap<Integer,String>();
			//R[] a1=new R[n];
			//char[] c=nextToken().toCharArray();

			int n = nextInt();
			if(n==1){
              writer.println("0");
            }
      else{
        writer.println("1");
      }
			
			//writer.println("YES");
		 }
	//}
}
