QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#106719#5663. Tangle: A DAG for storing transactionsmaspyAC ✓458ms3968kbC++2314.0kb2023-05-18 21:40:062023-05-18 21:40:07

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-18 21:40:07]
  • 评测
  • 测评结果:AC
  • 用时:458ms
  • 内存:3968kb
  • [2023-05-18 21:40:06]
  • 提交

answer

#line 1 "library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using u32 = unsigned int;
using u64 = unsigned long long;
using i128 = __int128;

template <class T>
constexpr T infty = 0;
template <>
constexpr int infty<int> = 1'000'000'000;
template <>
constexpr ll infty<ll> = ll(infty<int>) * infty<int> * 2;
template <>
constexpr u32 infty<u32> = infty<int>;
template <>
constexpr u64 infty<u64> = infty<ll>;
template <>
constexpr i128 infty<i128> = i128(infty<ll>) * infty<ll>;
template <>
constexpr double infty<double> = infty<ll>;
template <>
constexpr long double infty<long double> = infty<ll>;

using pi = pair<ll, ll>;
using vi = vector<ll>;
template <class T>
using vc = vector<T>;
template <class T>
using vvc = vector<vc<T>>;
template <class T>
using vvvc = vector<vvc<T>>;
template <class T>
using vvvvc = vector<vvvc<T>>;
template <class T>
using vvvvvc = vector<vvvvc<T>>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using pqg = priority_queue<T, vector<T>, greater<T>>;

#define vv(type, name, h, ...) \
  vector<vector<type>> name(h, vector<type>(__VA_ARGS__))
#define vvv(type, name, h, w, ...)   \
  vector<vector<vector<type>>> name( \
      h, vector<vector<type>>(w, vector<type>(__VA_ARGS__)))
#define vvvv(type, name, a, b, c, ...)       \
  vector<vector<vector<vector<type>>>> name( \
      a, vector<vector<vector<type>>>(       \
             b, vector<vector<type>>(c, vector<type>(__VA_ARGS__))))

// https://trap.jp/post/1224/
#define FOR1(a) for (ll _ = 0; _ < ll(a); ++_)
#define FOR2(i, a) for (ll i = 0; i < ll(a); ++i)
#define FOR3(i, a, b) for (ll i = a; i < ll(b); ++i)
#define FOR4(i, a, b, c) for (ll i = a; i < ll(b); i += (c))
#define FOR1_R(a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR2_R(i, a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR3_R(i, a, b) for (ll i = (b)-1; i >= ll(a); --i)
#define overload4(a, b, c, d, e, ...) e
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload4(__VA_ARGS__, FOR4, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) overload3(__VA_ARGS__, FOR3_R, FOR2_R, FOR1_R)(__VA_ARGS__)

#define FOR_subset(t, s) \
  for (ll t = (s); t >= 0; t = (t == 0 ? -1 : (t - 1) & (s)))
#define all(x) x.begin(), x.end()
#define len(x) ll(x.size())
#define elif else if

#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second

#define stoi stoll

int popcnt(int x) { return __builtin_popcount(x); }
int popcnt(u32 x) { return __builtin_popcount(x); }
int popcnt(ll x) { return __builtin_popcountll(x); }
int popcnt(u64 x) { return __builtin_popcountll(x); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 1, 2)
int topbit(int x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(u32 x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(ll x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
int topbit(u64 x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 0, 2)
int lowbit(int x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(u32 x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(ll x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }
int lowbit(u64 x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }

template <typename T, typename U>
T ceil(T x, U y) {
  return (x > 0 ? (x + y - 1) / y : x / y);
}
template <typename T, typename U>
T floor(T x, U y) {
  return (x > 0 ? x / y : (x - y + 1) / y);
}
template <typename T, typename U>
pair<T, T> divmod(T x, U y) {
  T q = floor(x, y);
  return {q, x - q * y};
}

template <typename T, typename U>
T SUM(const vector<U> &A) {
  T sum = 0;
  for (auto &&a: A) sum += a;
  return sum;
}

#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define UNIQUE(x) \
  sort(all(x)), x.erase(unique(all(x)), x.end()), x.shrink_to_fit()

template <typename T>
T POP(deque<T> &que) {
  T a = que.front();
  que.pop_front();
  return a;
}
template <typename T>
T POP(pq<T> &que) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(pqg<T> &que) {
  assert(!que.empty());
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(vc<T> &que) {
  assert(!que.empty());
  T a = que.back();
  que.pop_back();
  return a;
}

template <typename F>
ll binary_search(F check, ll ok, ll ng, bool check_ok = true) {
  if (check_ok) assert(check(ok));
  while (abs(ok - ng) > 1) {
    auto x = (ng + ok) / 2;
    tie(ok, ng) = (check(x) ? mp(x, ng) : mp(ok, x));
  }
  return ok;
}
template <typename F>
double binary_search_real(F check, double ok, double ng, int iter = 100) {
  FOR(iter) {
    double x = (ok + ng) / 2;
    tie(ok, ng) = (check(x) ? mp(x, ng) : mp(ok, x));
  }
  return (ok + ng) / 2;
}

template <class T, class S>
inline bool chmax(T &a, const S &b) {
  return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
  return (a > b ? a = b, 1 : 0);
}

// ? は -1
vc<int> s_to_vi(const string &S, char first_char) {
  vc<int> A(S.size());
  FOR(i, S.size()) { A[i] = (S[i] != '?' ? S[i] - first_char : -1); }
  return A;
}

template <typename T, typename U>
vector<T> cumsum(vector<U> &A, int off = 1) {
  int N = A.size();
  vector<T> B(N + 1);
  FOR(i, N) { B[i + 1] = B[i] + A[i]; }
  if (off == 0) B.erase(B.begin());
  return B;
}

// stable sort
template <typename T>
vector<int> argsort(const vector<T> &A) {
  vector<int> ids(len(A));
  iota(all(ids), 0);
  sort(all(ids),
       [&](int i, int j) { return (A[i] == A[j] ? i < j : A[i] < A[j]); });
  return ids;
}

// A[I[0]], A[I[1]], ...
template <typename T>
vc<T> rearrange(const vc<T> &A, const vc<int> &I) {
  vc<T> B(len(I));
  FOR(i, len(I)) B[i] = A[I[i]];
  return B;
}
#endif
#line 1 "library/other/io.hpp"
// based on yosupo's fastio
#include <unistd.h>

namespace fastio {
#define FASTIO
// クラスが read(), print() を持っているかを判定するメタ関数
struct has_write_impl {
  template <class T>
  static auto check(T &&x) -> decltype(x.write(), std::true_type{});

  template <class T>
  static auto check(...) -> std::false_type;
};

template <class T>
class has_write : public decltype(has_write_impl::check<T>(std::declval<T>())) {
};

struct has_read_impl {
  template <class T>
  static auto check(T &&x) -> decltype(x.read(), std::true_type{});

  template <class T>
  static auto check(...) -> std::false_type;
};

template <class T>
class has_read : public decltype(has_read_impl::check<T>(std::declval<T>())) {};

struct Scanner {
  FILE *fp;
  char line[(1 << 15) + 1];
  size_t st = 0, ed = 0;
  void reread() {
    memmove(line, line + st, ed - st);
    ed -= st;
    st = 0;
    ed += fread(line + ed, 1, (1 << 15) - ed, fp);
    line[ed] = '\0';
  }
  bool succ() {
    while (true) {
      if (st == ed) {
        reread();
        if (st == ed) return false;
      }
      while (st != ed && isspace(line[st])) st++;
      if (st != ed) break;
    }
    if (ed - st <= 50) {
      bool sep = false;
      for (size_t i = st; i < ed; i++) {
        if (isspace(line[i])) {
          sep = true;
          break;
        }
      }
      if (!sep) reread();
    }
    return true;
  }
  template <class T, enable_if_t<is_same<T, string>::value, int> = 0>
  bool read_single(T &ref) {
    if (!succ()) return false;
    while (true) {
      size_t sz = 0;
      while (st + sz < ed && !isspace(line[st + sz])) sz++;
      ref.append(line + st, sz);
      st += sz;
      if (!sz || st != ed) break;
      reread();
    }
    return true;
  }
  template <class T, enable_if_t<is_integral<T>::value, int> = 0>
  bool read_single(T &ref) {
    if (!succ()) return false;
    bool neg = false;
    if (line[st] == '-') {
      neg = true;
      st++;
    }
    ref = T(0);
    while (isdigit(line[st])) { ref = 10 * ref + (line[st++] & 0xf); }
    if (neg) ref = -ref;
    return true;
  }
  template <typename T,
            typename enable_if<has_read<T>::value>::type * = nullptr>
  inline bool read_single(T &x) {
    x.read();
    return true;
  }
  bool read_single(double &ref) {
    string s;
    if (!read_single(s)) return false;
    ref = std::stod(s);
    return true;
  }
  bool read_single(char &ref) {
    string s;
    if (!read_single(s) || s.size() != 1) return false;
    ref = s[0];
    return true;
  }
  template <class T>
  bool read_single(vector<T> &ref) {
    for (auto &d: ref) {
      if (!read_single(d)) return false;
    }
    return true;
  }
  template <class T, class U>
  bool read_single(pair<T, U> &p) {
    return (read_single(p.first) && read_single(p.second));
  }
  template <size_t N = 0, typename T>
  void read_single_tuple(T &t) {
    if constexpr (N < std::tuple_size<T>::value) {
      auto &x = std::get<N>(t);
      read_single(x);
      read_single_tuple<N + 1>(t);
    }
  }
  template <class... T>
  bool read_single(tuple<T...> &tpl) {
    read_single_tuple(tpl);
    return true;
  }
  void read() {}
  template <class H, class... T>
  void read(H &h, T &... t) {
    bool f = read_single(h);
    assert(f);
    read(t...);
  }
  Scanner(FILE *fp) : fp(fp) {}
};

struct Printer {
  Printer(FILE *_fp) : fp(_fp) {}
  ~Printer() { flush(); }

  static constexpr size_t SIZE = 1 << 15;
  FILE *fp;
  char line[SIZE], small[50];
  size_t pos = 0;
  void flush() {
    fwrite(line, 1, pos, fp);
    pos = 0;
  }
  void write(const char val) {
    if (pos == SIZE) flush();
    line[pos++] = val;
  }
  template <class T, enable_if_t<is_integral<T>::value, int> = 0>
  void write(T val) {
    if (pos > (1 << 15) - 50) flush();
    if (val == 0) {
      write('0');
      return;
    }
    if (val < 0) {
      write('-');
      val = -val; // todo min
    }
    size_t len = 0;
    while (val) {
      small[len++] = char(0x30 | (val % 10));
      val /= 10;
    }
    for (size_t i = 0; i < len; i++) { line[pos + i] = small[len - 1 - i]; }
    pos += len;
  }
  void write(const string s) {
    for (char c: s) write(c);
  }
  void write(const char *s) {
    size_t len = strlen(s);
    for (size_t i = 0; i < len; i++) write(s[i]);
  }
  void write(const double x) {
    ostringstream oss;
    oss << fixed << setprecision(15) << x;
    string s = oss.str();
    write(s);
  }
  void write(const long double x) {
    ostringstream oss;
    oss << fixed << setprecision(15) << x;
    string s = oss.str();
    write(s);
  }
  template <typename T,
            typename enable_if<has_write<T>::value>::type * = nullptr>
  inline void write(T x) {
    x.write();
  }
  template <class T>
  void write(const vector<T> val) {
    auto n = val.size();
    for (size_t i = 0; i < n; i++) {
      if (i) write(' ');
      write(val[i]);
    }
  }
  template <class T, class U>
  void write(const pair<T, U> val) {
    write(val.first);
    write(' ');
    write(val.second);
  }
  template <size_t N = 0, typename T>
  void write_tuple(const T t) {
    if constexpr (N < std::tuple_size<T>::value) {
      if constexpr (N > 0) { write(' '); }
      const auto x = std::get<N>(t);
      write(x);
      write_tuple<N + 1>(t);
    }
  }
  template <class... T>
  bool write(tuple<T...> tpl) {
    write_tuple(tpl);
    return true;
  }
  template <class T, size_t S>
  void write(const array<T, S> val) {
    auto n = val.size();
    for (size_t i = 0; i < n; i++) {
      if (i) write(' ');
      write(val[i]);
    }
  }
  void write(i128 val) {
    string s;
    bool negative = 0;
    if (val < 0) {
      negative = 1;
      val = -val;
    }
    while (val) {
      s += '0' + int(val % 10);
      val /= 10;
    }
    if (negative) s += "-";
    reverse(all(s));
    if (len(s) == 0) s = "0";
    write(s);
  }
};
Scanner scanner = Scanner(stdin);
Printer printer = Printer(stdout);
void flush() { printer.flush(); }
void print() { printer.write('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
  printer.write(head);
  if (sizeof...(Tail)) printer.write(' ');
  print(forward<Tail>(tail)...);
}

void read() {}
template <class Head, class... Tail>
void read(Head &head, Tail &... tail) {
  scanner.read(head);
  read(tail...);
}
} // namespace fastio
using fastio::print;
using fastio::flush;
using fastio::read;

#define INT(...)   \
  int __VA_ARGS__; \
  read(__VA_ARGS__)
#define LL(...)   \
  ll __VA_ARGS__; \
  read(__VA_ARGS__)
#define STR(...)      \
  string __VA_ARGS__; \
  read(__VA_ARGS__)
#define CHAR(...)   \
  char __VA_ARGS__; \
  read(__VA_ARGS__)
#define DBL(...)      \
  double __VA_ARGS__; \
  read(__VA_ARGS__)

#define VEC(type, name, size) \
  vector<type> name(size);    \
  read(name)
#define VV(type, name, h, w)                     \
  vector<vector<type>> name(h, vector<type>(w)); \
  read(name)

void YES(bool t = 1) { print(t ? "YES" : "NO"); }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { print(t ? "Yes" : "No"); }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { print(t ? "yes" : "no"); }
void no(bool t = 1) { yes(!t); }
#line 3 "main.cpp"

void solve() {
  LL(N, thresh);
  vvc<int> TO(N + 2);
  TO[1] = {0};
  vi dp(N + 2);
  FOR(i, 1, N + 1) {
    LL(a, b, c, d);
    TO[a] = {b, c};
    vc<bool> can(a + 1);
    can[a] = 1;
    FOR_R(i, a + 1) {
      if (can[i]) {
        for (auto&& to: TO[i]) can[to] = 1;
      }
    }
    FOR(i, a + 1) if (can[i]) dp[i] += d;
  }

  ll cnt = 0;
  FOR(x, 2, N + 1) {
    if (dp[x] >= thresh) {
      ++cnt;
      print(x, dp[x]);
    }
  }
  print(cnt);
}

signed main() {
  solve();
  return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3428kb

input:

6 12
2 0 1 3
3 0 2 2
4 1 2 1
5 2 3 3
6 3 4 4
7 3 5 5

output:

2 18
3 14
2

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 2ms
memory: 3456kb

input:

21 20
2 0 1 2
3 1 0 5
4 1 0 2
5 2 1 1
6 1 3 1
7 5 4 1
8 3 7 5
9 2 4 1
10 4 9 1
11 9 4 5
12 4 8 2
13 3 12 2
14 2 10 5
15 11 12 4
16 3 9 2
17 1 16 4
18 0 7 3
19 11 5 2
20 14 4 5
21 19 5 2
22 18 9 4

output:

2 51
3 25
4 50
5 26
7 21
9 35
6

result:

ok 7 lines

Test #3:

score: 0
Accepted
time: 0ms
memory: 3396kb

input:

99 250
2 1 0 1
3 0 2 2
4 3 2 1
5 4 3 4
6 1 2 3
7 5 0 1
8 0 7 2
9 0 8 3
10 3 4 5
11 1 4 4
12 5 6 3
13 12 8 2
14 13 2 3
15 4 10 5
16 5 6 1
17 7 10 1
18 2 5 5
19 9 7 4
20 16 12 5
21 6 3 1
22 7 9 1
23 13 11 1
24 12 9 3
25 7 22 3
26 10 20 5
27 11 12 2
28 26 9 5
29 18 6 5
30 13 17 4
31 25 12 4
32 31 20 3
...

output:

2 297
3 293
4 290
5 275
6 255
5

result:

ok 6 lines

Test #4:

score: 0
Accepted
time: 0ms
memory: 3428kb

input:

100 200
2 0 1 2
3 2 0 5
4 2 0 2
5 4 0 4
6 2 5 4
7 5 0 5
8 4 2 4
9 2 6 4
10 0 9 3
11 2 8 2
12 4 2 1
13 7 5 3
14 3 4 5
15 10 0 5
16 6 13 1
17 9 10 4
18 12 6 4
19 17 12 1
20 10 8 4
21 2 4 2
22 6 17 2
23 3 12 4
24 21 12 2
25 14 10 5
26 14 21 4
27 13 11 1
28 21 6 1
29 10 5 3
30 26 6 1
31 13 8 5
32 25 19 ...

output:

2 303
3 210
4 296
5 270
6 252
9 225
10 221
12 222
14 201
9

result:

ok 10 lines

Test #5:

score: 0
Accepted
time: 2ms
memory: 3420kb

input:

199 800
2 1 0 1
3 0 2 2
4 3 0 4
5 4 0 3
6 4 3 2
7 0 2 1
8 5 7 3
9 3 0 2
10 1 9 4
11 5 2 4
12 9 4 3
13 7 12 2
14 10 0 1
15 1 6 2
16 5 11 5
17 4 15 4
18 4 14 5
19 11 0 1
20 3 13 5
21 3 4 2
22 20 14 2
23 14 1 5
24 7 19 5
25 13 17 4
26 10 23 5
27 17 12 4
28 12 13 5
29 24 1 4
30 19 7 4
31 18 22 5
32 17 1...

output:

0

result:

ok single line: '0'

Test #6:

score: 0
Accepted
time: 155ms
memory: 3636kb

input:

5999 15000
2 0 1 2
3 2 1 1
4 3 1 4
5 1 2 5
6 4 1 1
7 2 6 3
8 4 1 5
9 7 8 2
10 0 4 4
11 3 2 1
12 8 1 1
13 10 3 2
14 1 0 3
15 13 1 3
16 0 4 5
17 6 8 2
18 1 6 1
19 5 2 2
20 4 6 5
21 8 0 2
22 9 20 4
23 17 7 4
24 17 0 1
25 23 3 4
26 12 15 1
27 15 5 3
28 17 25 2
29 17 24 3
30 28 9 2
31 22 6 2
32 12 9 3
33...

output:

2 18207
3 18198
4 18196
5 17811
6 18160
7 18147
8 18160
9 18108
10 18039
11 17672
12 17781
13 18035
14 15556
15 17938
16 18046
17 18138
18 17953
19 16110
20 18097
21 17976
22 18092
23 18113
24 18004
25 18001
26 17560
27 17707
28 17997
29 17998
30 16680
31 18085
32 17770
33 17680
34 17906
35 17902
36...

result:

ok 512 lines

Test #7:

score: 0
Accepted
time: 458ms
memory: 3968kb

input:

9999 25000
2 0 1 4
3 2 1 3
4 1 0 3
5 1 4 2
6 3 2 3
7 3 5 2
8 4 6 1
9 3 0 5
10 6 0 1
11 9 6 1
12 9 10 2
13 2 7 2
14 9 4 5
15 7 13 1
16 9 3 4
17 14 4 1
18 6 12 5
19 17 0 5
20 17 4 3
21 10 13 3
22 8 0 3
23 7 19 4
24 13 20 2
25 24 13 1
26 23 20 2
27 19 0 3
28 15 11 2
29 10 15 4
30 10 2 2
31 27 25 4
32 2...

output:

2 29905
3 29901
4 29880
5 29856
6 29841
7 29854
8 29755
9 29866
10 29821
11 29433
12 29770
13 29808
14 29843
15 29727
16 29665
17 29838
18 29768
19 29717
20 29809
21 29657
22 29750
23 29700
24 29759
25 29755
26 29664
27 29671
28 29432
29 29680
30 29371
31 29498
32 29015
33 29701
34 29629
35 29650
36...

result:

ok 817 lines

Test #8:

score: 0
Accepted
time: 108ms
memory: 3772kb

input:

5000 5000
2 0 1 4
3 2 1 4
4 2 1 3
5 0 3 3
6 1 2 5
7 6 4 4
8 1 6 4
9 7 2 3
10 4 5 2
11 1 5 2
12 0 10 5
13 4 8 1
14 1 13 4
15 6 12 2
16 1 6 2
17 12 5 4
18 10 12 2
19 11 13 2
20 6 3 2
21 3 16 2
22 21 12 1
23 9 22 5
24 6 0 5
25 10 16 1
26 10 25 1
27 18 16 5
28 22 23 3
29 22 18 3
30 10 2 2
31 23 2 4
32 1...

output:

2 14958
3 14921
4 14922
5 14898
6 14927
7 14738
8 14746
9 14734
10 14886
11 14557
12 14877
13 14742
14 14667
15 14475
16 14881
17 14597
18 14813
19 14478
20 14663
21 14861
22 14854
23 14731
24 14678
25 14713
26 14493
27 14734
28 14482
29 14776
30 14780
31 14537
32 11962
33 14476
34 14663
35 14481
36...

result:

ok 1778 lines

Test #9:

score: 0
Accepted
time: 107ms
memory: 3752kb

input:

5000 10000
2 1 0 3
3 2 0 2
4 2 1 3
5 4 3 3
6 5 3 4
7 2 6 5
8 3 6 5
9 7 6 2
10 1 9 1
11 4 3 4
12 2 3 4
13 0 2 3
14 1 11 1
15 5 13 5
16 10 11 2
17 11 8 5
18 14 1 1
19 15 18 1
20 14 3 4
21 19 14 5
22 14 19 4
23 21 19 3
24 8 11 5
25 13 19 5
26 22 19 2
27 17 21 1
28 10 5 1
29 20 12 4
30 10 0 4
31 12 0 1
...

output:

2 15127
3 15118
4 15114
5 15089
6 15049
7 14918
8 15027
9 14900
10 14894
11 15076
12 14983
13 15037
14 15055
15 15031
16 13392
17 15009
18 15022
19 15021
20 14982
21 14903
22 14959
23 14812
24 14503
25 14768
26 14905
27 14805
28 14880
29 14963
30 14181
31 14837
32 14871
33 14903
34 14728
35 14799
36...

result:

ok 966 lines