#include #include #include #include constexpr std::size_t road_max=1500; constexpr std::size_t infinity=9999999; template struct Setter{ explicit Setter()=default; struct decrement; template void set(const std::size_t in) { std::cin>>ar_[in]; if(std::is_same::value)--ar_[in]; } T& operator[](std::size_t in){return ar_[in];} std::array ar_; }; int main() { std::size_t N{},C{},V{}; std::array,50> ct{}; for(auto& ar:ct)std::fill(ar.begin(),ar.end(),infinity); using Set=Setter; Set S{},T{},Y{},M{}; std::cin>>N>>C>>V; #define REP_V for(std::size_t i=0; i(i); REP_V T.set(i); REP_V Y.set<>(i); REP_V M.set<>(i); ct[0][C]=0; for(std::size_t i=0; i((rs==infinity?-1:rs))<