#include<iostream> usingnamespace std; int n, m, L; int ans[300]; intmain() { cin >> n >> m >> L; for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) { int x; cin >> x; ans[x]++; } for (int i = 0; i < L; ++i) cout << ans[i] << ' '; return0; }
inlineintread() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + ch - '0'; ch = getchar(); } return x * f; }
constint MOD = 1e9 + 7; int n, a[1010], f[1010]; vector<int> factor[100010]; set<int> s;
intcal(int l, int r) { int ans = 0; for (constauto &i : factor[r - l]) { if (s.find(i) == s.end()) { if (i != r - l) ++ans; s.insert(i); } } return ans; }
intmain() { n = read(); for (int i = 1; i <= n; ++i) a[i] = read(); for (int i = 1; i <= 100000; ++i) { int t = sqrt(i); for (int j = 1; j <= t; ++j) if (i % j == 0) { factor[i].push_back(j); if (j * j != i) factor[i].push_back(i / j); } } f[1] = 1; for (int i = 2; i <= n; ++i) { s.clear(); for (int j = i - 1; j; --j) f[i] = ((LL)cal(a[j], a[i]) * f[j] % MOD + f[i]) % MOD; } printf("%d\n", f[n]); return0; }
inlineintread() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + ch - '0'; ch = getchar(); } return x * f; }
constint MAXN = 510; const LL INF = 0x3f3f3f3f3f3f3f3f; int n, m; int pass[MAXN][MAXN], passtime[MAXN][MAXN], pre[MAXN][MAXN]; LL b[MAXN], dis[MAXN], g[MAXN][MAXN]; structEdge { int v; LL x, a; }; vector<Edge> e[MAXN]; bool vis[MAXN];
LL exgcd(LL a, LL b, LL &x, LL &y) { if (b == 0) { x = 1; y = 0; return a; } LL d = exgcd(b, a % b, x, y); LL t = x; x = y; y = t - a / b * y; return d; }
LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; }
voiddijkstra() { for (int i = 1; i <= m; ++i) { int u; LL mn = INF; for (int j = 1; j <= m; ++j) { if (vis[j]) continue; if (dis[j] < mn) { u = j; mn = dis[j]; } } vis[u] = true; for (constauto &j : e[u]) { if (vis[j.v]) continue; LL val = ceil((double)(dis[u] - j.x) / j.a) * j.a + j.x; if (val < dis[j.v]) dis[j.v] = val; } } }
intmain() { n = read(); m = read(); memset(pre, -1, sizeof(pre)); for (int i = 1; i <= m; ++i) { int t = read(); pre[0][i] = 0; for (int j = 1; j <= t; ++j) { pass[i][j] = read(); passtime[i][j] = read(); pre[pass[i][j]][i] = pre[pass[i][j - 1]][i] + passtime[i][j - 1]; b[i] += passtime[i][j]; } } for (int j = 1; j <= m; ++j) for (int k = j + 1; k <= m; ++k) g[j][k] = gcd(b[j], b[k]); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (pre[i][j] == -1) continue; for (int k = j + 1; k <= m; ++k) { if (pre[i][k] == -1) continue; LL d = g[j][k]; if (abs(pre[i][j] - pre[i][k]) % d) continue; LL x, y; exgcd(b[j], b[k], x, y); if (pre[i][j] - pre[i][k] > 0) x = -x; else y = -y; e[j].push_back((Edge){k, x * abs(pre[i][j] - pre[i][k]) / d * b[j] + pre[i][j], b[k] / d * b[j]}); e[k].push_back((Edge){j, y * abs(pre[i][j] - pre[i][k]) / d * b[k] + pre[i][k], b[j] / d * b[k]}); } } } for (int i = 1; i <= m; ++i) { if (pre[1][i] == -1) dis[i] = INF; else dis[i] = pre[1][i]; } dijkstra(); for (int i = 2; i <= n; ++i) { LL ans = INF; for (int j = 1; j <= m; ++j) { if (pre[i][j] == -1) continue; LL val = dis[j] / b[j] * b[j] + pre[i][j]; if (val < dis[j]) val += b[j]; ans = min(ans, val); } if (ans == INF) puts("inf"); else printf("%lld\n", ans); } return0; }