#include <iostream>
struct Card {
public:
enum Suits { Hearts, Diamonds, Clubs, Spades } Suit;
int Index;
int Value;
Card(int index, int value, Suits suit) : Index(index), Value(value), Suit(suit) {}
};
bool spiderCanStackOn(const Card& bottom, const Card& top)
{
return bottom.Value == top.Value - 1;
}
bool spiderCanMoveWith(const Card& bottom, const Card& top)
{
return spiderCanStackOn(bottom, top) && bottom.Suit == top.Suit;
}
bool klondikeCanStackOn(const Card& bottom, const Card& top)
{
bool red1, red2;
red1 = bottom.Suit == Card::Suits::Hearts || bottom.Suit == Card::Suits::Diamonds;
red2 = top.Suit == Card::Suits::Hearts || top.Suit == Card::Suits::Diamonds;
return spiderCanStackOn(bottom, top) && red1 != red2;
}
bool klondikeCanMoveWith(const Card& bottom, const Card& top)
{
return klondikeCanStackOn(bottom, top);
}
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IENhcmQgewpwdWJsaWM6CgllbnVtIFN1aXRzIHsgSGVhcnRzLCBEaWFtb25kcywgQ2x1YnMsIFNwYWRlcyB9IFN1aXQ7CglpbnQgSW5kZXg7CglpbnQgVmFsdWU7CgkKCUNhcmQoaW50IGluZGV4LCBpbnQgdmFsdWUsIFN1aXRzIHN1aXQpIDogSW5kZXgoaW5kZXgpLCBWYWx1ZSh2YWx1ZSksIFN1aXQoc3VpdCkge30KfTsKCmJvb2wgc3BpZGVyQ2FuU3RhY2tPbihjb25zdCBDYXJkJiBib3R0b20sIGNvbnN0IENhcmQmIHRvcCkKewoJcmV0dXJuIGJvdHRvbS5WYWx1ZSA9PSB0b3AuVmFsdWUgLSAxOwp9CmJvb2wgc3BpZGVyQ2FuTW92ZVdpdGgoY29uc3QgQ2FyZCYgYm90dG9tLCBjb25zdCBDYXJkJiB0b3ApCnsKCXJldHVybiBzcGlkZXJDYW5TdGFja09uKGJvdHRvbSwgdG9wKSAmJiBib3R0b20uU3VpdCA9PSB0b3AuU3VpdDsKfQpib29sIGtsb25kaWtlQ2FuU3RhY2tPbihjb25zdCBDYXJkJiBib3R0b20sIGNvbnN0IENhcmQmIHRvcCkKewoJYm9vbCByZWQxLCByZWQyOwoJcmVkMSA9IGJvdHRvbS5TdWl0ID09IENhcmQ6OlN1aXRzOjpIZWFydHMgfHwgYm90dG9tLlN1aXQgPT0gQ2FyZDo6U3VpdHM6OkRpYW1vbmRzOwoJcmVkMiA9IHRvcC5TdWl0ID09IENhcmQ6OlN1aXRzOjpIZWFydHMgfHwgdG9wLlN1aXQgPT0gQ2FyZDo6U3VpdHM6OkRpYW1vbmRzOwoJcmV0dXJuIHNwaWRlckNhblN0YWNrT24oYm90dG9tLCB0b3ApICYmIHJlZDEgIT0gcmVkMjsKfQpib29sIGtsb25kaWtlQ2FuTW92ZVdpdGgoY29uc3QgQ2FyZCYgYm90dG9tLCBjb25zdCBDYXJkJiB0b3ApCnsKCXJldHVybiBrbG9uZGlrZUNhblN0YWNrT24oYm90dG9tLCB0b3ApOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9