#include <bits/stdc++.h>
#pragma GCC diagnostic ignored "-Wsign-compare"
using namespace std;
using ll = long long;
template <class T>
using V = vector<T>;
template <class T>
using VV = V<V<T>>;
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;
}
constexpr int INF = 1e9 + 7;
constexpr ll LINF = 1LL << 60;
class Prints {
 private:
  class __Prints {
   public:
    __Prints(const char* _sep, const char* _term) : sep(_sep), term(_term) {}
    template <class... Args>
    void operator()(const Args&... args) const {
      print(args...);
    }
    template <typename T>
    void pvec(const T& vec, size_t sz) const {
      for (size_t i = 0; i < sz; i++)
        std::cout << vec[i] << (i == sz - 1 ? term : sep);
    }
    template <typename T>
    void pmat(const T& mat, size_t h, size_t w) {
      for (size_t i = 0; i < h; i++)
        for (size_t j = 0; j < w; j++)
          std::cout << mat[i][j] << (j == w - 1 ? term : sep);
    }

   private:
    const char *sep, *term;
    void print() const { std::cout << term; }
    void print_rest() const { std::cout << term; }
    template <class T, class... Tail>
    void print(const T& head, const Tail&... tail) const {
      std::cout << head, print_rest(tail...);
    }
    template <class T, class... Tail>
    void print_rest(const T& head, const Tail&... tail) const {
      std::cout << sep << head, print_rest(tail...);
    }
  };

 public:
  Prints() {}
  __Prints operator()(const char* sep = " ", const char* term = "\n") const {
    return __Prints(sep, term);
  }
};
Prints print;
void solve() {
  int k;
  cin >> k;
  V<tuple<int, int, int>> A;
  for (int i = 0; i < (int)(k); ++i) {
    int n;
    cin >> n;
    V<int> T(n);
    int cur_sum = 0;
    for (int x = 0; x < (int)(n); ++x) {
      cin >> T[x];
      cur_sum += T[x];
    }
    for (int x = 0; x < (int)(n); ++x) {
      A.emplace_back(cur_sum - T[x], i + 1, x + 1);
    }
  }
  sort(A.begin(), A.end());
  bool ok = false;
  VV<int> ans(2, V<int>(2));
  int m = (int)A.size();
  for (int i = 0; i < (int)(m - 1); ++i) {
    if (get<1>(A[i]) != get<1>(A[i + 1]) and get<0>(A[i]) == get<0>(A[i + 1])) {
      ok = true;
      ans[0][0] = get<1>(A[i]);
      ans[0][1] = get<2>(A[i]);
      ans[1][0] = get<1>(A[i + 1]);
      ans[1][1] = get<2>(A[i + 1]);
    }
  }
  if (ok) {
    cout << "YES\n";
    print().pmat(ans, 2, 2);
  } else
    cout << "NO\n";
}
int main() {
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(15);
  solve();
}
