#include <iostream>
#include <vector>
#include <set>
using namespace std;

using pi = pair<int, int>;
using vi = vector<int>;
using vii = vector<pi>;
using vvi = vector<vi>;
using sii = set<pi>;
using si = set<int>;


int main() {
    int n; cin >> n;
    vvi marbles(n);
    for(int i = 0; i < n; ++i) {
        int k; cin >> k;
        marbles[i].resize(k);
        for(int j = 0; j < k; ++j) {
            cin >> marbles[i][j];
        }
    }
    set<pair<int, pair<int, int>>> d;
    long long answer = 0;
    long long modulo = 1e9 + 7;
    for(int i = 0; i < n; ++i) {
        d.insert({marbles[i][0], {i, 0}});
    }
    while(not d.empty()) {
        long long digiti = d.begin()->first;
        long long stacki = d.begin()->second.first;
        long long indexi = d.begin()->second.second;
        answer = (answer * 365 + digiti) % modulo;
        d.erase(d.begin());
        if((int)marbles[stacki].size() > indexi + 1) {
            d.insert({marbles[stacki][indexi + 1], {stacki, indexi + 1}}); 
        } 
    }
    cout << (365 * answer) % modulo  << endl;
    return 0;
}
