a:6:{i:0;s:12042:"				<div class="h1"><h1>Char Dham Yatra By Helicopter Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.dharatoursandtravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.dharatoursandtravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Char Dham Yatra By Helicopter Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Dehradun, Chamoli, Rudraprayag, Uttarkashi</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.dharatoursandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Char Dham Yatra By Helicopter Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="93591"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_14/415967/160098.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/415967/160098.jpg"  width="150" height="150"    alt="Char Dham Yatra By Helicopter Tour" title="Char Dham Yatra By Helicopter Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Dehradun - Yamunotri
								</p>
								<p class="aj">Departure from Sahastradhara helipad, Dehradun (07:00 AM).<br />
<br />
Arrival at Kharsali helipad, Yamunotri (07:45 AM).<br />
<br />
Assemble at the State government helipad on Sahastradhara Road, Dehradun, the starting and concluding point of this yatra. The ground staff briefs you about the do's and don'ts of the trip. The helicopter departs from here at around 7'o clock in the morning. As you arrive at the Kharsali helipad for Yamunotri, you are transferred to your hotel.<br />
<br />
After freshening up, you visit the Yamunotri temple for darshan. One of the four sites of Chhota Chardham Yatra of Uttarakhand, Yamunotri (3293 m) is the seat of Rive Goddess Yamuna. Yamunotri, lying on the top of Bandar Poonch Parvat, is the source of Yamuna River.<br />
<br />
The main attractions here are Goddess Yamuna and the thermal springs at Janki Chatti, which are around 7 km away. The actual Champasar glacier is at an altitude of 4421 m above the seal level and is inaccessible. The temple, placed on the left bank of Yamuna River, was erected by Maharaja Pratap Shah of Tehri Garhwal. The idol of the Goddess here is in black marble. Overnight stay at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Yamunotri - Gangotri
								</p>
								<p class="aj">Departure from Yamunotri helipad (07: 45 AM).<br />
<br />
Arrival at Harsil Helipad (08:30 AM).<br />
<br />
On day 2, depart from Yamunotri helipad and arrive at Harsil Helipad, lying amidst the beautiful lush Uttarakhand valleys. The day is scheduled for visiting the next Chardham destination of Uttarakhand- Gangotri. It is advisable that you visit the Gangotri temple, right from the helipad. The temple is located at a distance of 22 km from here. Arrive at the temple around 50 minutes later.<br />
<br />
This religious town of the Hindu devotees is placed on the banks of Bhagirathi River and is the originating point of the holy River Ganga. The temple is located at an altitude of 3100 m. the river here is known as Bhagirathi and it gets the name Ganga from Devprayag where it meets Alaknanda River. Gaumukh in the Gangtori Glacier is the originating point of Ganges River. This glacier is a 19 km trek away from here.<br />
<br />
Have Darshan at Gangotri temple, which was constructed by Amar Singh Thapa, the Gurkha General. The temple was constructed in 18th century. After Darshan, get transferred to your hotel in the afternoon. After completing the check-in, have your lunch. Later, you can relax for some time. The evening is at leisure. If you want, you can embark on an evening walk to the nearby villages where you can also buy some fine-quality woolens. Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Gangotri - Kedarnath
								</p>
								<p class="aj">Departure from Harsil helipad (09:00 AM)<br />
<br />
Arrival Kedarnath helipad (10:00 AM)<br />
<br />
The helicopter takes off from Harsil helipad at 9'0 clock in the morning and lands at Kedarnath helipad, around 500 meters from the Kedarnath temple. If you start walking from here, you end up at the temple after around 20 minutes. Located at an altitude of 3584 meters above the sea level, Kedarnath temple is one of the destinations of the most revered Chhota Chadham Yatra. Devoted to an incarnation of Lord Shiva, Kedarnath is also one of the 12 Jyotirlingas of the Lord. Hindu devotees believe that the Lord fulfills all the desires of his devotees.<br />
<br />
The temple was originally constructed by the Pandava brothers of the Hindu epic Mahabhrata. The temple that we see today was constructed by Adi Shankaracharya during the 8th century when he was on the mission of reviving Hinduism. At the temple's entrance gate, there is a Nandi bull statue (the divine bull of the Lord). Behind the temple, the Samadhi of the sage exists. There is no facility of staying at night in Kedarnath, so it is advisable that one must have darshan quickly so that they are back to helipad, on-time.<br />
<br />
The evening is scheduled for visiting the ancient Triyuginarayan temple. This Hindu temple is dedicated to Lord Vishnu. It is believed that the temple has been built on the site where Lord Vishnu had witnessed the wedding ceremony of Lord Shiva and Goddess Parvati. The perpetual fire that burns in the front of the temple, is one of the highlight here. Because of this, the temple is also called Akhand Dhuni temple. Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Kedarnath - Badrinath
								</p>
								<p class="aj">Departure from Kedarnath / Guptkashi helipad (10:15 AM).<br />
<br />
Arrival at Badrinath helipad (11:00 AM).<br />
<br />
After you arrive at Badrinath helipad, get transferred to the hotel for check-in. as you settle, get all set to visit the Badrinath temple. Badrinath is the holy abode of Lord Vishnu, also known and Lord Badri here. Have Darshan at the temple, which is nestled between the mountain ranges of Nar and Narayan.<br />
<br />
The temple is located on the left bank of River Alaknanda. Badrinath is also one of the 108 Divya Desams, the shrines for Vaishnavites. In the evening, you can visit to Mana village, around 3 km from Badrinath, it is the last village before Indo-China border. It is inhabited by an Indo-Mongolian tribe.<br />
<br />
In the village, you can visit Bhim Pul, a rock bridge over Saraswati River that was probably built by Bhim, one of the Pandava brothers and Vyas Gufa, known for being the site where the Hindu epic of Mahabharata was written Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Badrinath Return to Dehradun
								</p>
								<p class="aj">Departure from Badrinath helipad (11:30 AM).<br />
<br />
Arrival at Sahastradhara helipad, Dehradun (12:30 AM) Attend the Special Abhishek Puja at Badrinath temple, a major highlight of the yatra. It Puja starts 04.30 AM in the wee hours of morning.<br />
<br />
The Puja lasts for around 2 hours. Have darshan of the deity from close quarters.<br />
<br />
Later, depart from the Barinath helipad to Sahastradhara helipad in Dehradun. The tour ends.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.dharatoursandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Char Dham Yatra By Helicopter Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="93591"/>
						</form>
						</div>
						
						";i:1;s:73:"Book Char Dham Yatra By Helicopter Tour - 4 Nights / 5 Days Tour Packages";i:2;s:169:"book char dham yatra by helicopter tour - 4 nights / 5 days tour packages, religious & pilgrimage tour packages, dehradun, chamoli, rudraprayag, uttarkashi tour packages";i:3;s:209:"Dhara Tours and Travels offers Char Dham Yatra By Helicopter Tour - 4 Nights / 5 Days tour package, budget Religious & Pilgrimage tour packages for Dehradun, Chamoli, Rudraprayag, Uttarkashi at exciting price.";i:4;s:448:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dehradun, Chamoli, Rudraprayag, Uttarkashi"        
		                 },
		      "description": "",
		      "name": "Char Dham Yatra By Helicopter Tour",
		      "telephone": "+91-7666656959"
		    }
		    </script>
			";i:5;N;}