#include <bits/stdc++.h>
using namespace std;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
using ll = long long;
using P = pair<ll, ll>;
ll GCD(ll a, ll b) { return b?GCD(b, a%b):a; }
ll LCM(ll a, ll b) { return a/GCD(a, b)*b; }

// mapで文字集合を管理しておくのがよさそう
map<char, set<int> > mset;
set<int> U; // 全体集合

// 和集合
set<int> unite(set<int> X, set<int> Y) {
    for(auto &x : Y) {
        X.insert(x);
    }
    return X;
}

// 積集合
set<int> intersect(set<int> X, set<int> Y) {
    set<int> ret;
    for(auto &x : Y) {
        if(X.count(x)) ret.insert(x);
    }
    return ret;
}

// dの処理
set<int> diff(set<int> X, set<int> Y) {
    set<int> ret;
    for(auto &x : X) {
        if(Y.count(x) == 0) ret.insert(x);
    }
    return ret;
}

// sの処理
set<int> sym_diff(set<int> X, set<int> Y) {
    return unite(diff(X, Y), diff(Y, X));
}

// cの処理
set<int> comp(set<int> X) {
    set<int> ret;
    for(auto &x : U) {
        if(X.count(x) == 0) ret.insert(x);
    }
    return ret;
}

typedef string::const_iterator State;
class ParseError {};

struct Parser {
    // エラー検出
    void consume(State &begin, char expected) {
        if(*begin == expected) begin++;
        else {
            cerr << "Expected '" << expected << "' but got '" << *begin << "'" << endl;
            cerr << "Rest string is '";
            while(*begin) {
                cerr << *begin++;
            }
            cerr << "'" << endl;
            throw ParseError();
        }
    }

    // 数字の列をパースして、その数を返す
    // 今回は文字を扱うので使わない
    ll number(State &begin) {
        ll ret = 0;
        while(isdigit(*begin)) {
            ret *= 10;
            ret += (*begin - '0');
            begin++;
        }
        return ret;
    }

    // 括弧か数をパースして、その評価結果を返す
    // numberをその集合をリターンする形に変更
    set<int> factor(State &begin) {
        if(*begin == '(') {
            consume(begin, '(');    // '('を飛ばす
            set<int> ret = expression(begin);
            consume(begin, ')');    // ')'を飛ばす
            return ret;
        }else {
            // 値を取得してから1個進めておく
            return mset[*begin++];
        }
    }

    // 乗算除算の式をパースして、その評価結果を返す
    // cの処理が他より優先
    set<int> term(State &begin) {
        while(1) {
            if(*begin == 'c') {
                consume(begin, 'c');
                return comp(factor(begin));
            }else break;
        }
        return factor(begin);
    }

    // 四則演算の式をパースして、その評価結果を返す
    // u, i, d, sの分岐を行う
    set<int> expression(State &begin) {
        set<int> ret = term(begin);
        while(1) {
            if(*begin == 'u') {
                consume(begin, 'u');
                ret = unite(ret, term(begin));
            }else if(*begin == 'i') {
                consume(begin, 'i');
                ret = intersect(ret, term(begin));
            }else if(*begin == 'd') {
                consume(begin, 'd');
                ret = diff(ret, term(begin));
            }else if(*begin == 's') {
                consume(begin, 's');
                ret = sym_diff(ret, term(begin));
            }else break;
        }
        return ret;
    }
};

int main() {
    while(1) {
        bool flg = false;
        U.clear();  // 全体集合を初期化する
        mset.clear();   // 一度mapを初期化する
        // setに値を詰めている
        char c; int n;
        while(cin >> c >> n) {
            flg = true;
            if(c == 'R') break;
            for(int i = 0; i < n; ++i) {
                int xx; cin >> xx;
                mset[c].insert(xx);
                U.insert(xx);
            }
        }
        if(!flg) break;

        // 構文解析のフェーズ
        Parser ps;
        cin.ignore();
        string s;
        getline(cin, s);
        State begin = s.begin();
        set<int> ans = ps.expression(begin);
        int anslen = ans.size();
        int cnt = 0;
        if(anslen == 0) cout << "NULL" << endl;
        else {
            for(auto xans : ans) {
                if(cnt == anslen-1) cout << xans << endl;
                else cout << xans << " ";
                cnt++;
            }
        }
    }
}


Measured memory_bytes: 3248