QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#311013 | #5419. Triangles | yz_ly | AC ✓ | 0ms | 3984kb | C++14 | 2.9kb | 2024-01-21 20:53:47 | 2024-01-21 20:53:47 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
inline int read(){
char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-f;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
inline void work(int k){
if(k<0){
putchar('-');
k=-k;
}
if(k>9)
work(k/10);
putchar(k%10+'0');
}
/*
要求分成若干个锐角三角形
令在正方形边上的点的个数为x,中间点的个数为y,最后有k个三角形
易得180k=360+180x+360y
k=2+x+2y
又因为x个点至少被分成3个角,y个点至少被分成5个角,这样计算k个三角形,三角形中有3个角
所以3k>=2*4+3x+5y
乱搞一下发现k>=8
因为一个三角形很容易被分成四个三角形
所以我们只需要在8,9,10的基础上分就能够构造出所有的k<=50
8,9,10就靠自己去乱搞一下就行了
*/
int n;
struct node{
double x,y,l,r,p,q;
};
queue<node> ans,ans1;
int main(){
n=read();
if(n<8){
printf("No");
return 0;
}
puts("Yes");
int now=n;
if(n%3==2){
ans.emplace(node{0,0,9,4,0,20});
ans.emplace(node{0,20,9,4,10,20});
ans.emplace(node{10,20,9,4,11,4});
ans.emplace(node{10,20,11,4,20,20});
ans.emplace(node{20,0,20,20,11,4});
ans.emplace(node{0,0,10,0,9,4});
ans.emplace(node{10,0,11,4,9,4});
ans.emplace(node{10,0,20,0,11,4});
now-=8;
}
else if(n%3==1){
ans.emplace(node{0,0,10,8,0,20});
ans.emplace(node{20,0,10,8,20,20});
ans.emplace(node{0,20,10,8,20,20});
ans.emplace(node{0,0,8,0,5,4});
ans.emplace(node{10,3,5,4,8,0});
ans.emplace(node{10,3,10,8,5,4});
ans.emplace(node{10,3,8,0,12,0});
ans.emplace(node{10,3,12,0,15,4});
ans.emplace(node{10,3,15,4,10,8});
ans.emplace(node{20,0,15,4,12,0});
now-=10;
}
else{
ans.emplace(node{0,0,20,0,16,12});
ans.emplace(node{0,0,16,12,0,20});
ans.emplace(node{0,20,12,14,13,20});
ans.emplace(node{20,0,20,13,16,12});
ans.emplace(node{16,16,16,12,20,13});
ans.emplace(node{16,16,20,13,20,20});
ans.emplace(node{16,16,20,20,13,20});
ans.emplace(node{16,16,13,20,12,14});
ans.emplace(node{16,16,12,14,16,12});
now-=9;
}
while(now){
while(now&&!ans.empty()){
node k=ans.front();
ans.pop();
double g=(k.x+k.l)/2.0,g1=(k.y+k.r)/2.0,h=(k.x+k.p)/2.0,h1=(k.y+k.q)/2.0,v=(k.l+k.p)/2.0,v1=(k.r+k.q)/2.0;
ans1.emplace(node{k.x,k.y,g,g1,h,h1});
ans1.emplace(node{g,g1,h,h1,v,v1});
ans1.emplace(node{k.l,k.r,g,g1,v,v1});
ans1.emplace(node{k.p,k.q,h,h1,v,v1});
now-=3;
}
while(!ans1.empty()){
ans.emplace(ans1.front());
ans1.pop();
}
}
while(!ans.empty()){
node k=ans.front();
ans.pop();
work(k.x*5e7);
putchar(' ');
work(k.y*5e7);
putchar(' ');
work(k.l*5e7);
putchar(' ');
work(k.r*5e7);
putchar(' ');
work(k.p*5e7);
putchar(' ');
work(k.q*5e7);
putchar('\n');
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3648kb
input:
2
output:
No
result:
ok no solution
Test #2:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
24
output:
Yes 800000000 800000000 1000000000 650000000 1000000000 1000000000 800000000 800000000 1000000000 1000000000 650000000 1000000000 800000000 800000000 650000000 1000000000 600000000 700000000 800000000 800000000 600000000 700000000 800000000 600000000 0 0 500000000 0 400000000 300000000 500000000 0 4...
result:
ok 24 acute triangles
Test #3:
score: 0
Accepted
time: 0ms
memory: 3984kb
input:
1
output:
No
result:
ok no solution
Test #4:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
3
output:
No
result:
ok no solution
Test #5:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
4
output:
No
result:
ok no solution
Test #6:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
5
output:
No
result:
ok no solution
Test #7:
score: 0
Accepted
time: 0ms
memory: 3872kb
input:
6
output:
No
result:
ok no solution
Test #8:
score: 0
Accepted
time: 0ms
memory: 3716kb
input:
7
output:
No
result:
ok no solution
Test #9:
score: 0
Accepted
time: 0ms
memory: 3496kb
input:
8
output:
Yes 0 0 450000000 200000000 0 1000000000 0 1000000000 450000000 200000000 500000000 1000000000 500000000 1000000000 450000000 200000000 550000000 200000000 500000000 1000000000 550000000 200000000 1000000000 1000000000 1000000000 0 1000000000 1000000000 550000000 200000000 0 0 500000000 0 450000000 ...
result:
ok 8 acute triangles
Test #10:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
9
output:
Yes 0 0 1000000000 0 800000000 600000000 0 0 800000000 600000000 0 1000000000 0 1000000000 600000000 700000000 650000000 1000000000 1000000000 0 1000000000 650000000 800000000 600000000 800000000 800000000 800000000 600000000 1000000000 650000000 800000000 800000000 1000000000 650000000 1000000000 1...
result:
ok 9 acute triangles
Test #11:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
10
output:
Yes 0 0 500000000 400000000 0 1000000000 1000000000 0 500000000 400000000 1000000000 1000000000 0 1000000000 500000000 400000000 1000000000 1000000000 0 0 400000000 0 250000000 200000000 500000000 150000000 250000000 200000000 400000000 0 500000000 150000000 500000000 400000000 250000000 200000000 5...
result:
ok 10 acute triangles
Test #12:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
11
output:
Yes 0 1000000000 450000000 200000000 500000000 1000000000 500000000 1000000000 450000000 200000000 550000000 200000000 500000000 1000000000 550000000 200000000 1000000000 1000000000 1000000000 0 1000000000 1000000000 550000000 200000000 0 0 500000000 0 450000000 200000000 500000000 0 550000000 20000...
result:
ok 11 acute triangles
Test #13:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
12
output:
Yes 0 0 800000000 600000000 0 1000000000 0 1000000000 600000000 700000000 650000000 1000000000 1000000000 0 1000000000 650000000 800000000 600000000 800000000 800000000 800000000 600000000 1000000000 650000000 800000000 800000000 1000000000 650000000 1000000000 1000000000 800000000 800000000 1000000...
result:
ok 12 acute triangles
Test #14:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
13
output:
Yes 1000000000 0 500000000 400000000 1000000000 1000000000 0 1000000000 500000000 400000000 1000000000 1000000000 0 0 400000000 0 250000000 200000000 500000000 150000000 250000000 200000000 400000000 0 500000000 150000000 500000000 400000000 250000000 200000000 500000000 150000000 400000000 0 600000...
result:
ok 13 acute triangles
Test #15:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
14
output:
Yes 500000000 1000000000 450000000 200000000 550000000 200000000 500000000 1000000000 550000000 200000000 1000000000 1000000000 1000000000 0 1000000000 1000000000 550000000 200000000 0 0 500000000 0 450000000 200000000 500000000 0 550000000 200000000 450000000 200000000 500000000 0 1000000000 0 5500...
result:
ok 14 acute triangles
Test #16:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
15
output:
Yes 0 1000000000 600000000 700000000 650000000 1000000000 1000000000 0 1000000000 650000000 800000000 600000000 800000000 800000000 800000000 600000000 1000000000 650000000 800000000 800000000 1000000000 650000000 1000000000 1000000000 800000000 800000000 1000000000 1000000000 650000000 1000000000 8...
result:
ok 15 acute triangles
Test #17:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
16
output:
Yes 0 1000000000 500000000 400000000 1000000000 1000000000 0 0 400000000 0 250000000 200000000 500000000 150000000 250000000 200000000 400000000 0 500000000 150000000 500000000 400000000 250000000 200000000 500000000 150000000 400000000 0 600000000 0 500000000 150000000 600000000 0 750000000 2000000...
result:
ok 16 acute triangles
Test #18:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
17
output:
Yes 500000000 1000000000 550000000 200000000 1000000000 1000000000 1000000000 0 1000000000 1000000000 550000000 200000000 0 0 500000000 0 450000000 200000000 500000000 0 550000000 200000000 450000000 200000000 500000000 0 1000000000 0 550000000 200000000 0 0 225000000 100000000 0 500000000 225000000...
result:
ok 17 acute triangles
Test #19:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
18
output:
Yes 1000000000 0 1000000000 650000000 800000000 600000000 800000000 800000000 800000000 600000000 1000000000 650000000 800000000 800000000 1000000000 650000000 1000000000 1000000000 800000000 800000000 1000000000 1000000000 650000000 1000000000 800000000 800000000 650000000 1000000000 600000000 7000...
result:
ok 18 acute triangles
Test #20:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
19
output:
Yes 0 0 400000000 0 250000000 200000000 500000000 150000000 250000000 200000000 400000000 0 500000000 150000000 500000000 400000000 250000000 200000000 500000000 150000000 400000000 0 600000000 0 500000000 150000000 600000000 0 750000000 200000000 500000000 150000000 750000000 200000000 500000000 40...
result:
ok 19 acute triangles
Test #21:
score: 0
Accepted
time: 0ms
memory: 3724kb
input:
20
output:
Yes 1000000000 0 1000000000 1000000000 550000000 200000000 0 0 500000000 0 450000000 200000000 500000000 0 550000000 200000000 450000000 200000000 500000000 0 1000000000 0 550000000 200000000 0 0 225000000 100000000 0 500000000 225000000 100000000 0 500000000 225000000 600000000 450000000 200000000 ...
result:
ok 20 acute triangles
Test #22:
score: 0
Accepted
time: 0ms
memory: 3496kb
input:
21
output:
Yes 800000000 800000000 800000000 600000000 1000000000 650000000 800000000 800000000 1000000000 650000000 1000000000 1000000000 800000000 800000000 1000000000 1000000000 650000000 1000000000 800000000 800000000 650000000 1000000000 600000000 700000000 800000000 800000000 600000000 700000000 80000000...
result:
ok 21 acute triangles
Test #23:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
22
output:
Yes 500000000 150000000 250000000 200000000 400000000 0 500000000 150000000 500000000 400000000 250000000 200000000 500000000 150000000 400000000 0 600000000 0 500000000 150000000 600000000 0 750000000 200000000 500000000 150000000 750000000 200000000 500000000 400000000 1000000000 0 750000000 20000...
result:
ok 22 acute triangles
Test #24:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
23
output:
Yes 0 0 500000000 0 450000000 200000000 500000000 0 550000000 200000000 450000000 200000000 500000000 0 1000000000 0 550000000 200000000 0 0 225000000 100000000 0 500000000 225000000 100000000 0 500000000 225000000 600000000 450000000 200000000 225000000 100000000 225000000 600000000 0 1000000000 0 ...
result:
ok 23 acute triangles
Test #25:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
25
output:
Yes 500000000 150000000 500000000 400000000 250000000 200000000 500000000 150000000 400000000 0 600000000 0 500000000 150000000 600000000 0 750000000 200000000 500000000 150000000 750000000 200000000 500000000 400000000 1000000000 0 750000000 200000000 600000000 0 0 0 250000000 200000000 0 500000000...
result:
ok 25 acute triangles
Test #26:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
26
output:
Yes 500000000 0 550000000 200000000 450000000 200000000 500000000 0 1000000000 0 550000000 200000000 0 0 225000000 100000000 0 500000000 225000000 100000000 0 500000000 225000000 600000000 450000000 200000000 225000000 100000000 225000000 600000000 0 1000000000 0 500000000 225000000 600000000 0 1000...
result:
ok 26 acute triangles
Test #27:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
27
output:
Yes 800000000 800000000 1000000000 1000000000 650000000 1000000000 800000000 800000000 650000000 1000000000 600000000 700000000 800000000 800000000 600000000 700000000 800000000 600000000 0 0 500000000 0 400000000 300000000 500000000 0 400000000 300000000 900000000 300000000 1000000000 0 500000000 0...
result:
ok 27 acute triangles
Test #28:
score: 0
Accepted
time: 0ms
memory: 3544kb
input:
28
output:
Yes 500000000 150000000 400000000 0 600000000 0 500000000 150000000 600000000 0 750000000 200000000 500000000 150000000 750000000 200000000 500000000 400000000 1000000000 0 750000000 200000000 600000000 0 0 0 250000000 200000000 0 500000000 250000000 200000000 0 500000000 250000000 700000000 5000000...
result:
ok 28 acute triangles
Test #29:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
29
output:
Yes 500000000 0 1000000000 0 550000000 200000000 0 0 225000000 100000000 0 500000000 225000000 100000000 0 500000000 225000000 600000000 450000000 200000000 225000000 100000000 225000000 600000000 0 1000000000 0 500000000 225000000 600000000 0 1000000000 225000000 600000000 250000000 1000000000 2250...
result:
ok 29 acute triangles
Test #30:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
30
output:
Yes 800000000 800000000 650000000 1000000000 600000000 700000000 800000000 800000000 600000000 700000000 800000000 600000000 0 0 500000000 0 400000000 300000000 500000000 0 400000000 300000000 900000000 300000000 1000000000 0 500000000 0 900000000 300000000 800000000 600000000 400000000 300000000 90...
result:
ok 30 acute triangles
Test #31:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
31
output:
Yes 500000000 150000000 600000000 0 750000000 200000000 500000000 150000000 750000000 200000000 500000000 400000000 1000000000 0 750000000 200000000 600000000 0 0 0 250000000 200000000 0 500000000 250000000 200000000 0 500000000 250000000 700000000 500000000 400000000 250000000 200000000 250000000 7...
result:
ok 31 acute triangles
Test #32:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
32
output:
Yes 0 0 225000000 100000000 0 500000000 225000000 100000000 0 500000000 225000000 600000000 450000000 200000000 225000000 100000000 225000000 600000000 0 1000000000 0 500000000 225000000 600000000 0 1000000000 225000000 600000000 250000000 1000000000 225000000 600000000 250000000 1000000000 47500000...
result:
ok 32 acute triangles
Test #33:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
33
output:
Yes 800000000 800000000 600000000 700000000 800000000 600000000 0 0 500000000 0 400000000 300000000 500000000 0 400000000 300000000 900000000 300000000 1000000000 0 500000000 0 900000000 300000000 800000000 600000000 400000000 300000000 900000000 300000000 0 0 400000000 300000000 0 500000000 4000000...
result:
ok 33 acute triangles
Test #34:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
34
output:
Yes 500000000 150000000 750000000 200000000 500000000 400000000 1000000000 0 750000000 200000000 600000000 0 0 0 250000000 200000000 0 500000000 250000000 200000000 0 500000000 250000000 700000000 500000000 400000000 250000000 200000000 250000000 700000000 0 1000000000 0 500000000 250000000 70000000...
result:
ok 34 acute triangles
Test #35:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
35
output:
Yes 225000000 100000000 0 500000000 225000000 600000000 450000000 200000000 225000000 100000000 225000000 600000000 0 1000000000 0 500000000 225000000 600000000 0 1000000000 225000000 600000000 250000000 1000000000 225000000 600000000 250000000 1000000000 475000000 600000000 450000000 200000000 2250...
result:
ok 35 acute triangles
Test #36:
score: 0
Accepted
time: 0ms
memory: 3544kb
input:
36
output:
Yes 0 0 500000000 0 400000000 300000000 500000000 0 400000000 300000000 900000000 300000000 1000000000 0 500000000 0 900000000 300000000 800000000 600000000 400000000 300000000 900000000 300000000 0 0 400000000 300000000 0 500000000 400000000 300000000 0 500000000 400000000 800000000 800000000 60000...
result:
ok 36 acute triangles
Test #37:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
37
output:
Yes 1000000000 0 750000000 200000000 600000000 0 0 0 250000000 200000000 0 500000000 250000000 200000000 0 500000000 250000000 700000000 500000000 400000000 250000000 200000000 250000000 700000000 0 1000000000 0 500000000 250000000 700000000 1000000000 0 750000000 200000000 1000000000 500000000 7500...
result:
ok 37 acute triangles
Test #38:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
38
output:
Yes 450000000 200000000 225000000 100000000 225000000 600000000 0 1000000000 0 500000000 225000000 600000000 0 1000000000 225000000 600000000 250000000 1000000000 225000000 600000000 250000000 1000000000 475000000 600000000 450000000 200000000 225000000 600000000 475000000 600000000 500000000 100000...
result:
ok 38 acute triangles
Test #39:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
39
output:
Yes 500000000 0 400000000 300000000 900000000 300000000 1000000000 0 500000000 0 900000000 300000000 800000000 600000000 400000000 300000000 900000000 300000000 0 0 400000000 300000000 0 500000000 400000000 300000000 0 500000000 400000000 800000000 800000000 600000000 400000000 300000000 400000000 8...
result:
ok 39 acute triangles
Test #40:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
40
output:
Yes 0 0 250000000 200000000 0 500000000 250000000 200000000 0 500000000 250000000 700000000 500000000 400000000 250000000 200000000 250000000 700000000 0 1000000000 0 500000000 250000000 700000000 1000000000 0 750000000 200000000 1000000000 500000000 750000000 200000000 1000000000 500000000 75000000...
result:
ok 40 acute triangles
Test #41:
score: 0
Accepted
time: 0ms
memory: 3492kb
input:
41
output:
Yes 0 1000000000 0 500000000 225000000 600000000 0 1000000000 225000000 600000000 250000000 1000000000 225000000 600000000 250000000 1000000000 475000000 600000000 450000000 200000000 225000000 600000000 475000000 600000000 500000000 1000000000 250000000 1000000000 475000000 600000000 500000000 1000...
result:
ok 41 acute triangles
Test #42:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
42
output:
Yes 1000000000 0 500000000 0 900000000 300000000 800000000 600000000 400000000 300000000 900000000 300000000 0 0 400000000 300000000 0 500000000 400000000 300000000 0 500000000 400000000 800000000 800000000 600000000 400000000 300000000 400000000 800000000 0 1000000000 0 500000000 400000000 80000000...
result:
ok 42 acute triangles
Test #43:
score: 0
Accepted
time: 0ms
memory: 3652kb
input:
43
output:
Yes 250000000 200000000 0 500000000 250000000 700000000 500000000 400000000 250000000 200000000 250000000 700000000 0 1000000000 0 500000000 250000000 700000000 1000000000 0 750000000 200000000 1000000000 500000000 750000000 200000000 1000000000 500000000 750000000 700000000 500000000 400000000 7500...
result:
ok 43 acute triangles
Test #44:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
44
output:
Yes 0 1000000000 225000000 600000000 250000000 1000000000 225000000 600000000 250000000 1000000000 475000000 600000000 450000000 200000000 225000000 600000000 475000000 600000000 500000000 1000000000 250000000 1000000000 475000000 600000000 500000000 1000000000 475000000 600000000 525000000 60000000...
result:
ok 44 acute triangles
Test #45:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
45
output:
Yes 800000000 600000000 400000000 300000000 900000000 300000000 0 0 400000000 300000000 0 500000000 400000000 300000000 0 500000000 400000000 800000000 800000000 600000000 400000000 300000000 400000000 800000000 0 1000000000 0 500000000 400000000 800000000 0 1000000000 300000000 850000000 325000000 ...
result:
ok 45 acute triangles
Test #46:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
46
output:
Yes 500000000 400000000 250000000 200000000 250000000 700000000 0 1000000000 0 500000000 250000000 700000000 1000000000 0 750000000 200000000 1000000000 500000000 750000000 200000000 1000000000 500000000 750000000 700000000 500000000 400000000 750000000 200000000 750000000 700000000 1000000000 10000...
result:
ok 46 acute triangles
Test #47:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
47
output:
Yes 225000000 600000000 250000000 1000000000 475000000 600000000 450000000 200000000 225000000 600000000 475000000 600000000 500000000 1000000000 250000000 1000000000 475000000 600000000 500000000 1000000000 475000000 600000000 525000000 600000000 475000000 600000000 525000000 600000000 500000000 20...
result:
ok 47 acute triangles
Test #48:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
48
output:
Yes 0 0 400000000 300000000 0 500000000 400000000 300000000 0 500000000 400000000 800000000 800000000 600000000 400000000 300000000 400000000 800000000 0 1000000000 0 500000000 400000000 800000000 0 1000000000 300000000 850000000 325000000 1000000000 300000000 850000000 325000000 1000000000 62500000...
result:
ok 48 acute triangles
Test #49:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
49
output:
Yes 0 1000000000 0 500000000 250000000 700000000 1000000000 0 750000000 200000000 1000000000 500000000 750000000 200000000 1000000000 500000000 750000000 700000000 500000000 400000000 750000000 200000000 750000000 700000000 1000000000 1000000000 1000000000 500000000 750000000 700000000 0 1000000000 ...
result:
ok 49 acute triangles
Test #50:
score: 0
Accepted
time: 0ms
memory: 3504kb
input:
50
output:
Yes 450000000 200000000 225000000 600000000 475000000 600000000 500000000 1000000000 250000000 1000000000 475000000 600000000 500000000 1000000000 475000000 600000000 525000000 600000000 475000000 600000000 525000000 600000000 500000000 200000000 450000000 200000000 475000000 600000000 500000000 200...
result:
ok 50 acute triangles