#include <iostream>
using namespace std;
 
template<typename T=long>
struct Rect{
   T left, top, right, bottom;
   Rect( T l, T t, T r, T b ) : left(l), top(t), right(r), bottom(b) { }
   bool intersects( const Rect<T>& other ) const{
      return other.left <= right  && other.right  >= left
         &&  other.top  <= bottom && other.bottom >= top ;
   }
};
 
int main(){
   cout << "Intersects: "
        << Rect<>( 0, 0, 20, 20 ).intersects( { 10, 10, 100, 100 } );
   return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD1sb25nPgpzdHJ1Y3QgUmVjdHsKICAgVCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgIFJlY3QoIFQgbCwgVCB0LCBUIHIsIFQgYiApIDogbGVmdChsKSwgdG9wKHQpLCByaWdodChyKSwgYm90dG9tKGIpIHsgfQogICBib29sIGludGVyc2VjdHMoIGNvbnN0IFJlY3Q8VD4mIG90aGVyICkgY29uc3R7CiAgICAgIHJldHVybiBvdGhlci5sZWZ0IDw9IHJpZ2h0ICAmJiBvdGhlci5yaWdodCAgPj0gbGVmdAogICAgICAgICAmJiAgb3RoZXIudG9wICA8PSBib3R0b20gJiYgb3RoZXIuYm90dG9tID49IHRvcCA7CiAgIH0KfTsKCmludCBtYWluKCl7CiAgIGNvdXQgPDwgIkludGVyc2VjdHM6ICIKICAgICAgICA8PCBSZWN0PD4oIDAsIDAsIDIwLCAyMCApLmludGVyc2VjdHMoIHsgMTAsIDEwLCAxMDAsIDEwMCB9ICk7CiAgIHJldHVybiAwOwp9