#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005;
const double eps = 1e-5;
inline int sgn(double x){return fabs(x) < eps ? 0 : (x < 0 ? -1 : 1);}
inline int cmp(double x, double y){return sgn(x - y);}
inline double Square(double x){return x * x;}
struct Point
{
double x;
double y;
};
typedef Point Vector;
Vector operator + (Vector a, Vector b){return (Vector){a.x + b.x, a.y + b.y};} //向量四则运算
Vector operator - (Vector a, Vector b){return (Vector){a.x - b.x, a.y - b.y};}
Vector operator * (Vector a, double b){return (Vector){a.x * b, a.y * b};}
Vector operator / (Vector a, double b){return (Vector){a.x / b, a.y / b};}
double operator & (Vector a, Vector b){return a.x * b.x + a.y * b.y;} // 点积
double operator ^ (Vector a, Vector b){return a.x * b.y - a.y * b.x;} // 叉积
double PointDistance(Point a, Point b){return sqrt((b - a) & (b - a));} // 点距
inline double VectorLength(Vector x){return hypot(x.x, x.y);} // 向量模长
inline bool SamePoint(Point a, Point b){return sgn(a.x - b.x) == 0 && sgn(a.y - b.y) == 0;}
inline double PointAngle(Point x)
{
return atan2(x.y, x.x);
}
inline Point ClockRotate(Point x, double angle) // 顺时针旋转angle度数,精度丢失较大
{
return (Point){x.x * cos(angle) + x.y * sin(angle), -x.x * sin(angle) + x.y * cos(angle)};
}
inline Point CounterClockRotate(Point x, double angle) // 逆时针
{
return (Point){x.x * cos(angle) - x.y * sin(angle), x.x * sin(angle) + x.y * cos(angle)};
}
inline double CosAngle(Vector a, Vector b){return a & b / VectorLength(a) / VectorLength(b);} // 夹角余弦
inline bool IsPerpendicular(Vector a, Vector b){return sgn(a & b) == 0;} // 垂直
inline double AreaParallelogram(Vector a, Vector b){return a ^ b;} // 平行四边形面积
inline bool IsParallel(Vector a, Vector b){return sgn(a ^ b) == 0;} // 平行
inline int ToLeft(Point a, Point b, Point c){return sgn((b - a) ^ (c - a));} // <0 c在ab右侧,>0 c在ab左侧
inline int ToUp(Point a, Point b, Point c){return sgn((b - a) & (c - a));} // <0 c在ab上侧,>0 c在ab下侧
inline Vector Turn(Vector x, double angle) // 逆时针旋转angle度数,精度丢失较大
{
return (Vector){x.x * cos(angle) - x.y * sin(angle), x.x * sin(angle) + x.y * cos(angle)};
}
struct Line // 直线
{
Point Pa;
Point Pb;
};
typedef Line Segment; // 线段
inline Point PerpendPoint(Point a/*a点*/, Point b/*ab为方向向量*/, Point c/*需要投影的点*/)
{
return a + (b - a) * ((a - c) & (b - a) / Square(VectorLength(b - a))); // OB = OA + 单位向量乘对应模长
}
inline double LineDisPoint(Line a, Point c){return fabs((a.Pb - a.Pa) ^ c) / VectorLength(a.Pb - a.Pa);}
// (需要Pb为垂点)点线距
inline double LineDistance(Line a, Segment b){return ((b.Pa - a.Pa) ^ (b.Pb - a.Pa)) / ((b.Pb - b.Pa) ^ (a.Pb - a.Pa)) * PointDistance(a.Pa, a.Pb);}
// 平行线距
struct Status // 射线
{
double Length;
int Flag;
};
inline bool operator < (Status a, Status b){return sgn(b.Length - a.Length) > 0;}
inline bool InLine(double x, double y, double z){return sgn(x - z) * sgn(y - z) <= 0;} // 本质为正投影
inline bool InLine(Point a, Point b, Point c){return InLine(a.x, b.x, c.x) && InLine(a.y, b.y, c.y);} // 在线上
inline double Cross(Point a, Point b, Point c)
{
return (a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x);
}
inline Point GetCrossPoint(Point P1, Point P2, Point P3, Point P4) // 求交点
{
double W1 = (P1 - P3) ^ (P4 - P3), W2 = (P4 - P3) ^ (P2 - P3);
return (Point)((P1 * W2 + P2 * W1) / (W1 + W2));
}
signed main()
{
cout << fixed << setprecision(12) << VectorLength({5, 12}) << "\n";
}