#include <bits/stdc++.h>
using namespace std;

struct TreeNode {
    int val;
    TreeNode *left, *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

TreeNode* buildTree(vector<int>& a) {
    if(a.empty() || a[0]==-1) return NULL;
    TreeNode* root=new TreeNode(a[0]);
    queue<TreeNode*> q;
    q.push(root);
    int i=1;
    while(!q.empty() && i<a.size()){
        TreeNode* cur=q.front(); q.pop();
        if(i<a.size() && a[i]!=-1){
            cur->left=new TreeNode(a[i]);
            q.push(cur->left);
        }
        i++;
        if(i<a.size() && a[i]!=-1){
            cur->right=new TreeNode(a[i]);
            q.push(cur->right);
        }
        i++;
    }
    return root;
}

bool mirror(TreeNode* l,TreeNode* r){
    if(!l && !r) return true;
    if(!l || !r) return false;
    return l->val==r->val && mirror(l->left,r->right) && mirror(l->right,r->left);
}

int main(){
    int n; cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++) cin>>a[i];
    TreeNode* root=buildTree(a);
    if(!root || mirror(root->left,root->right))
        cout<<"Symmetric";
    else
        cout<<"Not Symmetric";
    return 0;
}