#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int val;
    struct Node *left, *right;
} Node;

Node* newNode(int val) {
    Node* node = (Node*)malloc(sizeof(Node));
    node->val = val;
    node->left = node->right = NULL;
    return node;
}

typedef struct {
    Node* arr[100000];
    int front, rear;
} Queue;

void push(Queue q, Node n) {
    q->arr[q->rear++] = n;
}
Node* pop(Queue *q) {
    return q->arr[q->front++];
}
int empty(Queue *q) {
    return q->front == q->rear;
}

int isMirror(Node* a, Node* b) {
    if(!a && !b) return 1;
    if(!a || !b) return 0;
    return (a->val == b->val) && 
           isMirror(a->left, b->right) && 
           isMirror(a->right, b->left);
}

int main() {
    int n;
    if(scanf("%d", &n) != 1 || n <= 0) {
        printf("Not Symmetric");
        return 0;
    }

    int arr[n];
    for(int i = 0; i < n; i++) scanf("%d", &arr[i]);

    Node* root = newNode(arr[0]);
    Queue q; q.front = q.rear = 0;
    push(&q, root);

    int i = 1;
    while(i < n && !empty(&q)) {
        Node* cur = pop(&q);
        if(i < n && arr[i] != -1) {
            cur->left = newNode(arr[i]);
            push(&q, cur->left);
        }
        i++;
        if(i < n && arr[i] != -1) {
            cur->right = newNode(arr[i]);
            push(&q, cur->right);
        }
        i++;
    }

    if(isMirror(root->left, root->right)) 
        printf("Symmetric");
    else 
        printf("Not Symmetric");

    return 0;
}