#include <iostream>
#include <cmath>
#include <vector>
#include <cassert>
typedef std::vector<double> Points;
double l(const Points &points)
{
double sum = 0;
for(int i = 0; i < points.size(); ++i)
sum += (points[i]*points[i]);
return std::sqrt(sum);
};
Points n(Points points)
{
double length = l(points);
for(int i = 0; i < points.size(); ++i)
points[i] /= length;
return points;
};
double d(const Points &a, const Points &b)
{
double sum = 0;
assert(a.size() == b.size());
for(int i = 0; i < a.size(); ++i)
sum += (a[i]*b[i]);
return sum;
};
int main()
{
int N = 0;
std::cin >> N;
std::vector<Points> P;
for(;N > 0; --N)
{
int A = 0;
double R = 0;
std::cin >> A;
Points points;
for(;A > 0; --A)
{
std::cin >> R;
points.push_back(R);
}
P.push_back(points);
}
std::cin >> N;
std::vector<Points > O;
for(;N > 0; --N)
{
Points o;
char C = 0;
int I = 0;
std::cin >> C >> I;
if(C == 'l')
o.push_back(l(P[I]));
else if(C == 'n')
{
Points p = n(P[I]);
for(int i = 0; i < p.size(); ++i)
o.push_back(p[i]);
}
else if(C == 'd')
{
int I2 = 0;
std::cin >> I2;
o.push_back(d(P[I], P[I2]));
}
O.push_back(o);
}
std::cout << std::endl;
for(int i = 0; i < O.size(); ++i)
{
for(int e = 0; e < O[i].size(); ++e)
std::cout << O[i][e] << " ";
std::cout << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxjYXNzZXJ0PgoKdHlwZWRlZiBzdGQ6OnZlY3Rvcjxkb3VibGU+IFBvaW50czsKCmRvdWJsZSBsKGNvbnN0IFBvaW50cyAmcG9pbnRzKQp7CiAgICBkb3VibGUgc3VtID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyArK2kpCiAgICAgICAgc3VtICs9IChwb2ludHNbaV0qcG9pbnRzW2ldKTsKICAgIHJldHVybiBzdGQ6OnNxcnQoc3VtKTsKfTsKUG9pbnRzIG4oUG9pbnRzIHBvaW50cykKewogICAgZG91YmxlIGxlbmd0aCA9IGwocG9pbnRzKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyArK2kpCiAgICAgICAgcG9pbnRzW2ldIC89IGxlbmd0aDsKICAgIHJldHVybiBwb2ludHM7Cn07CmRvdWJsZSBkKGNvbnN0IFBvaW50cyAmYSwgY29uc3QgUG9pbnRzICZiKQp7CiAgICBkb3VibGUgc3VtID0gMDsKICAgIGFzc2VydChhLnNpemUoKSA9PSBiLnNpemUoKSk7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgYS5zaXplKCk7ICsraSkKICAgICAgICBzdW0gKz0gKGFbaV0qYltpXSk7CiAgICByZXR1cm4gc3VtOwp9OwoKaW50IG1haW4oKQp7CiAgICBpbnQgTiA9IDA7CiAgICBzdGQ6OmNpbiA+PiBOOwoKICAgIHN0ZDo6dmVjdG9yPFBvaW50cz4gUDsKICAgIGZvcig7TiA+IDA7IC0tTikKICAgIHsKICAgICAgICBpbnQgQSA9IDA7CiAgICAgICAgZG91YmxlIFIgPSAwOwogICAgICAgIHN0ZDo6Y2luID4+IEE7CgogICAgICAgIFBvaW50cyBwb2ludHM7CiAgICAgICAgZm9yKDtBID4gMDsgLS1BKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjaW4gPj4gUjsKICAgICAgICAgICAgcG9pbnRzLnB1c2hfYmFjayhSKTsKICAgICAgICB9CiAgICAgICAgUC5wdXNoX2JhY2socG9pbnRzKTsKICAgIH0KCiAgICBzdGQ6OmNpbiA+PiBOOwogICAgc3RkOjp2ZWN0b3I8UG9pbnRzID4gTzsKICAgIGZvcig7TiA+IDA7IC0tTikKICAgIHsKICAgICAgICBQb2ludHMgbzsKICAgICAgICBjaGFyIEMgPSAwOwogICAgICAgIGludCBJID0gMDsKICAgICAgICBzdGQ6OmNpbiA+PiBDID4+IEk7CgogICAgICAgIGlmKEMgPT0gJ2wnKQogICAgICAgICAgICBvLnB1c2hfYmFjayhsKFBbSV0pKTsKICAgICAgICBlbHNlIGlmKEMgPT0gJ24nKQogICAgICAgIHsKICAgICAgICAgICAgUG9pbnRzIHAgPSBuKFBbSV0pOwogICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgcC5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgIG8ucHVzaF9iYWNrKHBbaV0pOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKEMgPT0gJ2QnKQogICAgICAgIHsKICAgICAgICAgICAgaW50IEkyID0gMDsKICAgICAgICAgICAgc3RkOjpjaW4gPj4gSTI7CiAgICAgICAgICAgIG8ucHVzaF9iYWNrKGQoUFtJXSwgUFtJMl0pKTsKICAgICAgICB9CiAgICAgICAgTy5wdXNoX2JhY2sobyk7CiAgICB9CgogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBPLnNpemUoKTsgKytpKQogICAgewogICAgICAgIGZvcihpbnQgZSA9IDA7IGUgPCBPW2ldLnNpemUoKTsgKytlKQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgT1tpXVtlXSA8PCAiICI7CiAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9
NQoyIDEgMQoyIDEuMiAzLjQKMyA2Ljc4MjY5IDYuNzIgNi43NjMxMgo0IDAgMSAwIDEKNyA4NC44MiAxMjEuMDAgNDY3LjA1IDE0Mi4xNCA1OTIuNTUgOTcxLjc5IDc5NS4zMwo3CmwgMApsIDMKbCA0Cm4gMQpuIDIKbiAzCmQgMCAx
5
2 1 1
2 1.2 3.4
3 6.78269 6.72 6.76312
4 0 1 0 1
7 84.82 121.00 467.05 142.14 592.55 971.79 795.33
7
l 0
l 3
l 4
n 1
n 2
n 3
d 0 1