a:6:{i:0;s:18315:"				<div class="h1"><h1>Char dham with Valley of Flower Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.pragyatravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.pragyatravels.com/tour-packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Char dham with Valley of Flower Package</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">
						13 Nights / 14 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Haridwar, Chamoli, Rishikesh, Rudraprayag, Uttarkashi, Barkot, Harsil, Ghangaria, Auli, Jyotirmath</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.pragyatravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Char dham with Valley of Flower Package - 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="68048"/>
						</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_15/434232/124058.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/434232/124058.jpg"  width="150" height="150"    alt="Char dham with Valley of Flower Package" title="Char dham with Valley of Flower Package" /></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> Arrival Delhi - Haridwar (205 Kms. 06 hrs)
								</p>
								<p class="aj">Upon arrival in Delhi meeting and assistance followed by drive to Haridwar. On arrival at Haridwar check-in at hotel. Evening Visit Mansa Devi temple & Aarti at Har Ki Peri. Overnight stay at hotel.<br />
<br />
Haridwar : Haridwar, lying at the feet of Shiva's hills, i.e., Shivaliks, in the Haridwar district of Uttaranchal Pradesh, is a doorway. Suryavanshi prince Bhagirathi performed penance here to salvage the souls of his ancestors who had perished due to the curse of sage Kapila. The penance was answered and the river Ganga trickled forth forms Lord Shiva's locks and its bountiful water revived the sixty thousand sons of king Sagara. In the traditional of Bhagirathi, devout Hindus stand in the sacred waters here, praying for salvation of their departed elder. It is doorway to the sources of the Ganga and the Yamuna, 3000 to 4500 meters up into the snowy ranges of the central Himalayas. The 'Aarti' worship of the Ganga after sunset and the floating 'dia' (lamp) is a moving ritual.</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> Haridwar - Barkot (215 Kms. 07 hrs)
								</p>
								<p class="aj">Morning drive to Barkot via Dehradun, Mussoorie, and en-route visit Kempty fall. Later continue drive to Barkot. On arrival Barkot Check In at Hotel. Overnight stay at 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 3:</b> Barkot - Yamunotri - Barkot (42 Kms Drive / 6 Kms trek.)
								</p>
								<p class="aj">Morning leave for Janki Chatti via Hanuman Chatti & Fool Chatti. On arrival Janki Chatti start Trek of 06 kms for Yamunotri, On Arrive Yamunotri Holi Dip in Garam Kund, than Pooja and Darshan of Shree Yamunotri Ji, after Darshan and Pooja, afternoon start trek back to Janki Chatti on arrival Janki Chatti meet with driver and drive back to Barkot. Overnight stay at Hotel.<br />
<br />
Hanuman Chatti : The confluence of Hanuman Ganga & Yamuna River.<br />
<br />
Yamunotri Temple : Maharani Gularia of Jaipur built the temple in the 19th Century. It was destroyed twice in the present century and rebuilt again.<br />
<br />
Surya Kund : There are a Number of thermal springs in the vicinity of the temple, which flows into numerous pools. The most important of these is Surya Kund.<br />
<br />
Divya Shila : A rock pillar, worshipped before entering the Yamunotri Temple.</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> Barkot - Uttarkashi (Drive 82 Kms, 04 hrs)
								</p>
								<p class="aj">Morning leave for Uttarkashi, a drive of 82 kms. Enroute vist Prakateshwar Cave, on arrival Uttarkashi check in at the hotel evening visit Vishwnath Temple, Overnight stay at the hotel.<br />
<br />
Uttarkashi : Situated at the bank of river Bhagirathi. The temple of Lord Vishwanath is located here where a massive iron trident is erected. The other important temples situated here are Ekadash Rudra, Bhairav, Gyaneshwar and Goddess Kuteti Devi.</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> Uttarkashi - Gangotri - Uttarkashi (100 Kms. per way)
								</p>
								<p class="aj">Early morning drive to Gangotri and on arrival take a holy dip in the sacred river Ganges, also called Bhagirathi at its origin. Perform Pooja after that and relax for some time in the lovely surroundings, afternoon drive to Uttarkashi, on arrival check into 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 6:</b> Uttarkashi - Guptakashi (223 Kms. Drive 9 - 10 Hrs)
								</p>
								<p class="aj">Morning drive to Guptakashi, en-route visit Tehri Dam & continue journey toward Guptakashi. Upon arrival in check-in at hotel. Later in the evening visit Kashi Vishwnath Temple, Ardh Narishwar Temple, Overnight stay at the Hotel.<br />
<br />
Guptakashi : is located in the Northern Himalayan belt within the Mandakini river valley, which has lush green forests. A number of streams and rivulets drain into the main Mandakini River. It has salubrious climate with its elevation being around 1,319 meters (4,330 ft). The snow sparkling view of the Chaukhamba peak is a lovely sight to behold in the morning hours from here. The valley has large magnolia trees (locally called Champa) that provide a sweet scented atmosphere to the place.</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 7:</b> Guptakashi - Kedarnath (32 Kms Drive, 14 Kms. Trek)
								</p>
								<p class="aj">Morning drive to Gaurikund (32 kms drive-one way). On arrival Gaurikund start your journey on the tough Trek ahead. Stop for lunch en route at Rambara, and continue after that to arrive by late afternoon, on arrival check in to the Hotel / Guest Houses. After freshening up, perform Pooja and also Darshan at Shri Kedarnathji. In the evening also visit Adi Shankaracharya Samadhi behind the Temple. Overnight stay at the Hotel or Guest Houses.<br />
<br />
Kedarnath : is a majestic sight, standing in the middle of a wide plateau surrounded by lofty snow covered peaks. The present temple, built in the 8th century by Adi Shankaracharya, stands adjacent to the site of an earlier temple built by the Pandavas. The inner walls of the assembly hall are decorated with figures of various deities and scenes from mythology. Outside the temple door a large statue of the Nandi Bull stands as guard.</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 8:</b> Kedarnath - Pipalkoti (14 Kms trek 145 kms Drive)
								</p>
								<p class="aj">Early Morning Pooja and darshan at the Temple, Morning start trek down to Gaurikund, on arrival meet with driver and leave for Pipalkoti, on arrival Pipalkoti check in at hotel for overnight stay.<br />
<br />
Pipalkoti : is a small and scenic town situated at an elevation of 1,260mts above sea level. It is located 17kms after Chamoli on NH58. Pipalkoti acts a relaxation point for people traveling to Badrinath, Auli, Hemkund Sahib and Valley of Flowers. It is nestled amidst lush green mountains and terraced fields. Pipalkoti provides delightful views of the snow clad mountains and green hills all around.</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 9:</b> Pipalkoti - Badrinath (72 kms)
								</p>
								<p class="aj">Morning leave for Shri Badrinath Ji. En-route visit Narsingh Temple, and Adi Sankracharya Samadhi at Joshimath, than drive to Badrinath On arrival take the holy Darshan and spend time visiting Mana village the last village before the Tibetan border, Byas Gufa, Bheem Pul, Saraswati River, Overnight stay at hotel.<br />
<br />
Tapt Kund : Natural thermal springs on the bank of the river Alaknanda, where it is customary to bathe before entering the Badrinath temple.<br />
<br />
Narad Kund : A recess in the river, near Tapt Kund, forming a pool from where the Badrinath idol was recovered.<br />
<br />
Mata Murty Temple : Devoted to the mother of Sri Badrinathji. Other important temples include Sesh Netra Temple, Urvashi Temple and Charanpaduka.<br />
<br />
Mana Village : Inhabited by an Indo-Mongolian tribe, it is the last Indian village before Tibet.<br />
<br />
Bhim Pul : On the other side of Mana village, a massive rock forming a natural bridge lies over the roaring Saraswati<br />
<br />
River. It presents a spectacular view of water thundering down through the narrow passage under the rock and is believed to have been placed there by Bhim, the second eldest among the five Pandava brothers.<br />
<br />
Vyas Gufa (cave) : Near Mana Village, this is a rock-cave where Ved Vyas is believed to have composed the Mahabharata and the pauranic commentaries.</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 10:</b> Badrinath - Govindghat - Ghangharia (23 Kms drive + 14 Kms Trek)
								</p>
								<p class="aj">Early morning Pooja at Temple. Later drive to drive to Govindghat. On arrival at Govindghat start 14 Kms trek to Ghangaria. Evening Reach Ghangaria check in at Hotel. Overnight stay at Camp.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Ghangharia - Valley of Flowers - Ghangharia (5 Kms trek one way)
									</p>
									<p class="aj">Morning start trek to Valley of flowers. explore the Valley of Flowers. see the several kind of flowers in Valley than trek back to Ghangharia. Overnight stay at Camp.</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 12:</b> : Ghangharia - Govindghat - Rudraprayag (132 Kms)
									</p>
									<p class="aj">Morning t trek down to Govindghat upon arrival Govindghat driver back to Rudraprayag. En-route visit Nandpryag (Confluence of Nandakini and Alaknanda River). Karanpryag (Confluence of Pinder River and Alaknand River). On arrival Rudraprayag check in at hotel. Overnight stay at hotel.<br />
<br />
Rudraprayag : It is the confluence of river Mandakini and river Alaknanda.<br />
<br />
Temples : Rudranath and Chamunda Devi, Koteshwar Temple (3 Kms)</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 13:</b> Rudraprayag - Rishikesh (135 Kms 7 hrs)
									</p>
									<p class="aj">Morning drive to Rishikesh via Srinagar Garhwal. En-route visits the Confluence of Bhagirathi and Alaknada River which is called Devprayag. Than continue drive towards Rishikesh. On arrival check in at hotel. Overnight stay at hotel.<br />
<br />
Rishikesh : 24 Kms. from Hardwar. Located in the laps of lower Himalayas, and is surrounded by scenic beauty of the hills on three sides with Holy Ganga flowing through it. The whole place is considered to be sacred as it is believed that meditation at this place leads to attainment of salvation. There are many temples-some ancient, some new along the river Ganges. Rishikesh is important not only as pilgrimage center closely associated with the Ramayana, but also as home for many important centers of Hindu religious thought and spirituality, and as a very great Yoga Center. There are a great many ashrams and Yoga institutes here. Rishikesh is also the gateway and the start-off point for journeys to important religious places like Badrinath, Kedarnath, Gangotri, and Yamunotri.</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 14:</b> : Rishikesh - Delhi (234 km)
									</p>
									<p class="aj">Morning drive to Delhi. Upon arrival in Delhi drop you at the Airport / Railway station for onwards destination.</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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.pragyatravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Char dham with Valley of Flower Package - 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="68048"/>
						</form>
						</div>
						
						";i:1;s:80:"Book Char dham with Valley of Flower Package - 13 Nights / 14 Days Tour Packages";i:2;s:243:"book char dham with valley of flower package - 13 nights / 14 days tour packages, religious & pilgrimage tour packages, new delhi, haridwar, chamoli, rishikesh, rudraprayag, uttarkashi, barkot, harsil, ghangaria, auli, jyotirmath tour packages";i:3;s:287:"Book Char dham with Valley of Flower Package - 13 Nights / 14 Days tour packages from Pr Travels - Get attractive 13 Nights / 14 Days Religious & Pilgrimage  tour packages for  New Delhi, Haridwar, Chamoli, Rishikesh, Rudraprayag, Uttarkashi, Barkot, Harsil, Ghangaria, Auli, Jyotirmath.";i:4;s:520:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Haridwar, Chamoli, Rishikesh, Rudraprayag, Uttarkashi, Barkot, Harsil, Ghangaria, Auli, Jyotirmath"        
		                 },
		      "description": "",
		      "name": "Char dham with Valley of Flower Package",
		      "telephone": "+91-7060220730"
		    }
		    </script>
			";i:5;N;}