struct Edge { int i; int j; }; struct Side { int i; int j; int k; }; class Graph { protected: int Nn; int En; int Sn; Edge *E; Side *S; void randomE(); void randomS(); public: Graph(int Nn_, int En_, int Sn_); ~Graph(); void kring_sides(int s1, int s2, int s3); }; class Rcvgraph: public Graph { int *packets; int pn; int newp(); int Pn; public: Rcvgraph(int Nn_, int En_, int Sn_); ~Rcvgraph(); void init(); int rx(int *csum); }; void subset(int *Set, int N, int n);