Problem: You took a peek on Thanos wearing Infinity Gauntlet. In the Gauntlet there is a place for six Infinity Gems:

  * the Power Gem of purple color, 
  * the Time Gem of green color, 
  * the Space Gem of blue color, 
  * the Soul Gem of orange color, 
  * the Reality Gem of red color, 
  * the Mind Gem of yellow color. 



Using colors of Gems you saw in the Gauntlet determine the names of absent Gems.

Input

In the first line of input there is one integer n (0 ≤ n ≤ 6) — the number of Gems in Infinity Gauntlet.

In next n lines there are colors of Gems you saw. Words used for colors are: purple, green, blue, orange, red, yellow. It is guaranteed that all the colors are distinct. All colors are given in lowercase English letters.

Output

In the first line output one integer m (0 ≤ m ≤ 6) — the number of absent Gems.

Then in m lines print the names of absent Gems, each on its own line. Words used for names are: Power, Time, Space, Soul, Reality, Mind. Names can be printed in any order. Keep the first letter uppercase, others lowercase.

Examples

Input

4
red
purple
yellow
orange


Output

2
Space
Time


Input

0


Output

6
Time
Mind
Soul
Power
Reality
Space

Note

In the first sample Thanos already has Reality, Power, Mind and Soul Gems, so he needs two more: Time and Space.

In the second sample Thanos doesn't have any Gems, so he needs all six.

Solution (in JAVA):

Solution:


import java.io.*;
import java.util.*;
import java.math.*;

public class Maths {
    static final Random random = new Random();
    static PrintWriter out = new PrintWriter((System.out));
    static Reader sc = new Reader();

    public static void main(String args[]) throws IOException {
//        int t = sc.nextInt();
//        while (t-- > 0) {

//        	CODE START FROM HERE
        int n = sc.nextInt();
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("purple", "Power");
        map.put("green", "Time");
        map.put("blue", "Space");
        map.put("orange", "Soul");
        map.put("red", "Reality");
        map.put("yellow", "Mind");
        String s[] = new String[n];

        for (int i = 0; i < n; i++) {
            s[i] = sc.nextLine();

        }
        System.out.println(6-n);
        for (int i = 0; i < n; i++) {

            if (map.containsKey(s[i])) {
                map.remove(s[i], map.get(s[i]));
            }
            }

        for (Map.Entry<String, String> entry : map.entrySet())
            System.out.println(entry.getValue());

    }

    // Fast Input Output
    static class Reader {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer("");

        public String next() {
            while (!st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return br.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = br.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            st = new StringTokenizer(next);
            return true;
        }
    }

    // EFFICIENT SORTING Ascending
    static void ruffleSortAsc(Integer[] a) {
        int n = a.length; // shuffle, then sort
        for (int i = 0; i < n; i++) {
            int oi = random.nextInt(n), temp = a[oi];
            a[oi] = a[i];
            a[i] = temp;
        }
        Arrays.sort(a);
    }

    //	EFFICIENT SORTING Descending
    static void ruffleSortDesc(Integer[] a) {
        int n = a.length; // shuffle, then sort
        for (int i = 0; i < n; i++) {
            int oi = random.nextInt(n), temp = a[oi];
            a[oi] = a[i];
            a[i] = temp;
        }
        Arrays.sort(a, Collections.reverseOrder());
    }

    // Array Sum
    static long sum(Integer[] arr) {
        long sum = 0;
        for (int i : arr)
            sum += i;
        return sum;
    }

    // swap array elements
    static void swap(int arr1[], int arr2[], int i, int j) {
        int temp = arr1[i];
        arr1[i] = arr2[j];
        arr2[j] = temp;
    }

    // reading array value;
    static void read(Integer[] arr) {
        for (int i = 0; i < arr.length; i++)
            arr[i] = sc.nextInt();
        return;
    }

//    reading arraylistValue

    // check for even odd
    static boolean isEven(int n) {
        return ((n & 1) != 1);
    }

    // max in a array
    static int max(Integer[] arr) {
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++)
            if (max < arr[i])
                max = arr[i];
        return max;
    }

    //  print array
    static void printarr(Integer arr[]) {
        for (int i : arr)
            System.out.println(i);
    }

    // ceil of two elements
    static long ceil(int a, int b) {
        return (long) Math.ceil(((double) a / (double) b));
    }

    // floor of two elements
    static long floor(int a, int b) {
        return (long) Math.floor(((double) a / (double) b));
    }

}