#include <iostream>
using namespace std;
 
class ClassA; // Forward declaration
 
class ClassB; // Forward declaration
 
// Friend function declaration
int sumPrivate(ClassA a, ClassB b);
 
class ClassA {
private:
    int numA;
 
public:
    ClassA(int n) { numA = n; }
 
    // Declare friend function
    friend int sumPrivate(ClassA a, ClassB b);
};
 
class ClassB {
private:
    int numB;
 
public:
    ClassB(int n) { numB = n; }
 
    // Declare friend function
    friend int sumPrivate(ClassA a, ClassB b);
};
 
// Friend function definition
int sumPrivate(ClassA a, ClassB b) {
    // Access private members of both classes
    return a.numA + b.numB;
}
 
int main() {
    ClassA objA(10);
    ClassB objB(20);
 
    cout << "Sum of private members: " << sumPrivate(objA, objB) << endl;
 
    return 0;
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ2xhc3NBOyAvLyBGb3J3YXJkIGRlY2xhcmF0aW9uCgpjbGFzcyBDbGFzc0I7IC8vIEZvcndhcmQgZGVjbGFyYXRpb24KCi8vIEZyaWVuZCBmdW5jdGlvbiBkZWNsYXJhdGlvbgppbnQgc3VtUHJpdmF0ZShDbGFzc0EgYSwgQ2xhc3NCIGIpOwoKY2xhc3MgQ2xhc3NBIHsKcHJpdmF0ZToKICAgIGludCBudW1BOwoKcHVibGljOgogICAgQ2xhc3NBKGludCBuKSB7IG51bUEgPSBuOyB9CgogICAgLy8gRGVjbGFyZSBmcmllbmQgZnVuY3Rpb24KICAgIGZyaWVuZCBpbnQgc3VtUHJpdmF0ZShDbGFzc0EgYSwgQ2xhc3NCIGIpOwp9OwoKY2xhc3MgQ2xhc3NCIHsKcHJpdmF0ZToKICAgIGludCBudW1COwoKcHVibGljOgogICAgQ2xhc3NCKGludCBuKSB7IG51bUIgPSBuOyB9CgogICAgLy8gRGVjbGFyZSBmcmllbmQgZnVuY3Rpb24KICAgIGZyaWVuZCBpbnQgc3VtUHJpdmF0ZShDbGFzc0EgYSwgQ2xhc3NCIGIpOwp9OwoKLy8gRnJpZW5kIGZ1bmN0aW9uIGRlZmluaXRpb24KaW50IHN1bVByaXZhdGUoQ2xhc3NBIGEsIENsYXNzQiBiKSB7CiAgICAvLyBBY2Nlc3MgcHJpdmF0ZSBtZW1iZXJzIG9mIGJvdGggY2xhc3NlcwogICAgcmV0dXJuIGEubnVtQSArIGIubnVtQjsKfQoKaW50IG1haW4oKSB7CiAgICBDbGFzc0Egb2JqQSgxMCk7CiAgICBDbGFzc0Igb2JqQigyMCk7CgogICAgY291dCA8PCAiU3VtIG9mIHByaXZhdGUgbWVtYmVyczogIiA8PCBzdW1Qcml2YXRlKG9iakEsIG9iakIpIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K